Suppression and Deduplication of Place-Entities on Online Social Networks

ABSTRACT

In one embodiment, a method includes receiving from a client system a search query, identifying a first place-entity based on the search query, accessing a place-entities graph comprising a plurality of place-entity nodes, each place-entity node representing a particular place-entity associated with a particular geographic location, wherein the first place-entity is represented by a first place-entity node, accessing a redirection graph comprising the plurality of place-entity nodes and a plurality of place-entity clusters, each place-entity node in a place-entity cluster having a redirection edge connecting the place-entity node to a canonical place-entity node of the respective place-entity cluster, and sending a response to the search query, wherein if the first place-entity node is connected to a canonical place-entity node by a redirection edge within the redirection graph, the response comprises a reference to the canonical place-entity node, else the response comprises a reference to the first place-entity node.

PRIORITY

This application is a continuation under 35 U.S.C. § 120 of U.S. patentapplication Ser. No. 15/192,702, filed 24 Jun. 2016, which claims thebenefit, under 35 U.S.C. § 119(e), of U.S. Provisional PatentApplication No. 62/277,179, filed 11 Jan. 2016, each of which isincorporated herein by reference.

TECHNICAL FIELD

This disclosure generally relates to online social networks, and inparticular to identifying, determining, ranking, or suppressing entitiesassociated with an online social network.

BACKGROUND

A social-networking system, which may include a social-networkingwebsite, may enable its users (such as persons or organizations) tointeract with it and with each other through it. The social-networkingsystem may, with input from a user, create and store in thesocial-networking system a user profile associated with the user. Theuser profile may include demographic information, communication-channelinformation, and information on personal interests of the user. Thesocial-networking system may also, with input from a user, create andstore a record of relationships of the user with other users of thesocial-networking system, as well as provide services (e.g., wall posts,photo-sharing, event organization, messaging, games, or advertisements)to facilitate social interaction between or among users.

The social-networking system may send over one or more networks contentor messages related to its services to a mobile or other computingdevice of a user. A user may also install software applications on amobile or other computing device of the user for accessing a userprofile of the user and other data within the social-networking system.The social-networking system may generate a personalized set of contentobjects to display to a user, such as a newsfeed of aggregated storiesof other users connected to the user.

Social-graph analysis views social relationships in terms of networktheory consisting of nodes and edges. Nodes represent the individualactors within the networks, and edges represent the relationshipsbetween the actors. The resulting graph-based structures are often verycomplex. There can be many types of nodes and many types of edges forconnecting nodes. In its simplest form, a social graph is a map of allof the relevant edges between all the nodes being studied.

A mobile computing device—such as a smartphone, tablet computer, orlaptop computer—may include functionality for determining its location,direction, or orientation, such as a GPS receiver, compass, gyroscope,or accelerometer. Such a device may also include functionality forwireless communication, such as BLUETOOTH communication, near-fieldcommunication (NFC), or infrared (IR) communication or communicationwith a wireless local area networks (WLANs) or cellular-telephonenetwork. Such a device may also include one or more cameras, scanners,touchscreens, microphones, or speakers. Mobile computing devices mayalso execute software applications, such as games, web browsers, orsocial-networking applications. With social-networking applications,users may connect, communicate, and share information with other usersin their social networks.

SUMMARY OF PARTICULAR EMBODIMENTS

In particular embodiments, place-entities stored on an online socialnetwork may correspond to particular geographic locations. Theplace-entities may be stored as place-entity nodes on a social graph ofthe online social network. The place-entity nodes may also be placed ina place-entities graph. Searches for particular place-entities on theonline social network may search the place-entities graph for a matchingplace-entity. Place-entity nodes may be generated by external websitesor databases, partner sites, individual users, or any other suitablesource. In particular embodiments, generation of place-entity nodes mayresult in a high number of low-quality place-entity nodes, or a numberof duplicative place-entity nodes that all refer to the same particulargeographic location.

In particular embodiments, a customized redirection graph for aplace-entity graph of a social-networking system may be created. Theplace-entity graph may include all place-entity nodes of thesocial-networking system. In order to improve search functionality, thesocial-networking system may prioritize providing users withhigh-quality place-entity nodes when submitting a search. The creationof the redirection graph may include three steps: a suppression process,a deduplication process, and a best-page selection. In the suppressionprocess, place-entity nodes of low-quality are identified and removedfrom consideration. The removal may be through un-indexing of the nodefrom the place-entities graph, or through down-ranking of the node.Deduplication may identify place-entity nodes with similar attributesthat may refer to the same place-entity, and determine whether one ofthe nodes should be redirected to the other. Best-page selection mayidentify, from among a cluster of similar place-entity nodes, a “best”or “canonical” node that represents the cluster, and redirect the othernodes in the cluster to the best node. Custom redirection graphs may beused to suit a particular search or any other purpose.

In particular embodiments, identification of low-quality place-entitynodes may be done through a heterogeneous graph. The heterogeneous graphmay comprise place-entity nodes, n-gram nodes, and user nodes. N-gramnodes may correspond to n-grams of place names, which may be associatedwith the place-entity nodes having those place names. Place-entity nodesmay be connected to their associated n-gram nodes, and the user nodesmay be connected to place-entity nodes based upon a social signalbetween the user and the place-entity. Initial seed scores may beassigned to some of the place-entity nodes, based upon knowndeterminations that they are high- or low- quality. The seed scores maybe propagated through the heterogeneous graph, with each node beingassigned a score that is the weighted average of the scores of theconnecting nodes. The propagation may be performed iteratively until thescores of the nodes reach convergence. The final scores of theplace-entity nodes may be compared to a threshold quality-score.

In particular embodiments, deduplication of place-entity nodes may beperformed by clustering place-entity nodes, where each place-entitycluster is determined to be referring to the same place-entity. Aduplication score may be calculated by comparing the place-entity nodesto determine whether the place-entity nodes belong in the same cluster.The duplication score may be compared to a threshold redirect-score todetermine whether a place-entity node should be redirected to anotherplace-entity node.

In particular embodiments, for a place-entity cluster, a singlecanonical place-entity node may be selected, with the other place-entitynodes in the cluster having a redirection edge to the canonicalplace-entity cluster. The quality of the redirection graph may beevaluated by finding sample place-entity clusters and assigning a scoreto each place-entity node in the cluster based on an initial score basedon a class of the node, and an adjustment to the score based on socialsignals associated with the place-entity node. The highest-scoringplace-entity node may be determined to be the canonical place-entitynode.

The embodiments disclosed above are only examples, and the scope of thisdisclosure is not limited to them. Particular embodiments may includeall, some, or none of the components, elements, features, functions,operations, or steps of the embodiments disclosed above. Embodimentsaccording to the invention are in particular disclosed in the attachedclaims directed to a method, a storage medium, a system and a computerprogram product, wherein any feature mentioned in one claim category,e.g. method, can be claimed in another claim category, e.g. system, aswell. The dependencies or references back in the attached claims arechosen for formal reasons only. However any subject matter resultingfrom a deliberate reference back to any previous claims (in particularmultiple dependencies) can be claimed as well, so that any combinationof claims and the features thereof are disclosed and can be claimedregardless of the dependencies chosen in the attached claims. The subject-matter which can be claimed comprises not only the combinations offeatures as set out in the attached claims but also any othercombination of features in the claims, wherein each feature mentioned inthe claims can be combined with any other feature or combination ofother features in the claims. Furthermore, any of the embodiments andfeatures described or depicted herein can be claimed in a separate claimand/or in any combination with any embodiment or feature described ordepicted herein or with any of the features of the attached claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example network environment associated with asocial-networking system.

FIG. 2 illustrates an example social graph.

FIG. 3 illustrates an example place-entities graph.

FIG. 4 illustrates an example place-entities redirection graph.

FIG. 5 illustrates an example place-entities redirection graph.

FIG. 6 illustrates an example method for generating a redirection graph.

FIG. 7 illustrates an example heterogeneous graph.

FIG. 8 illustrates an example method for suppressing entity suggestions.

FIG. 9A-9D illustrate an example of iterative propagation of scoresthrough a heterogeneous graph.

FIG. 10 illustrates an example method for ranking place-entities.

FIG. 11 illustrates an example computer system.

DESCRIPTION OF EXAMPLE EMBODIMENTS System Overview

FIG. 1 illustrates an example network environment 100 associated with asocial-networking system. Network environment 100 includes a clientsystem 130, a social-networking system 160, and a third-party system 170connected to each other by a network 110. Although FIG. 1 illustrates aparticular arrangement of client system 130, social-networking system160, third-party system 170, and network 110, this disclosurecontemplates any suitable arrangement of client system 130,social-networking system 160, third-party system 170, and network 110.As an example and not by way of limitation, two or more of client system130, social-networking system 160, and third-party system 170 may beconnected to each other directly, bypassing network 110. As anotherexample, two or more of client system 130, social-networking system 160,and third-party system 170 may be physically or logically co-locatedwith each other in whole or in part. Moreover, although FIG. 1illustrates a particular number of client systems 130, social-networkingsystems 160, third-party systems 170, and networks 110, this disclosurecontemplates any suitable number of client systems 130,social-networking systems 160, third-party systems 170, and networks110. As an example and not by way of limitation, network environment 100may include multiple client system 130, social-networking systems 160,third-party systems 170, and networks 110.

This disclosure contemplates any suitable network 110. As an example andnot by way of limitation, one or more portions of network 110 mayinclude an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), a portion of the Internet, a portion of the Public SwitchedTelephone Network (PSTN), a cellular telephone network, or a combinationof two or more of these. Network 110 may include one or more networks110.

Links 150 may connect client system 130, social-networking system 160,and third-party system 170 to communication network 110 or to eachother. This disclosure contemplates any suitable links 150. Inparticular embodiments, one or more links 150 include one or morewireline (such as for example Digital Subscriber Line (DSL) or Data OverCable Service Interface Specification (DOCSIS)), wireless (such as forexample Wi-Fi or Worldwide Interoperability for Microwave Access(WiMAX)), or optical (such as for example Synchronous Optical Network(SONET) or Synchronous Digital Hierarchy (SDH)) links. In particularembodiments, one or more links 150 each include an ad hoc network, anintranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, aportion of the Internet, a portion of the PSTN, a cellulartechnology-based network, a satellite communications technology-basednetwork, another link 150, or a combination of two or more such links150. Links 150 need not necessarily be the same throughout networkenvironment 100. One or more first links 150 may differ in one or morerespects from one or more second links 150.

In particular embodiments, client system 130 may be an electronic deviceincluding hardware, software, or embedded logic components or acombination of two or more such components and capable of carrying outthe appropriate functionalities implemented or supported by clientsystem 130. As an example and not by way of limitation, a client system130 may include a computer system such as a desktop computer, notebookor laptop computer, netbook, a tablet computer, e-book reader, GPSdevice, camera, personal digital assistant (PDA), handheld electronicdevice, cellular telephone, smartphone, augmented/virtual realitydevice, other suitable electronic device, or any suitable combinationthereof. This disclosure contemplates any suitable client systems 130. Aclient system 130 may enable a network user at client system 130 toaccess network 110. A client system 130 may enable its user tocommunicate with other users at other client systems 130.

In particular embodiments, client system 130 may include a web browser132, such as MICROSOFT INTERNET EXPLORER, GOOGLE CHROME or MOZILLAFIREFOX, and may have one or more add-ons, plug-ins, or otherextensions, such as TOOLBAR or YAHOO TOOLBAR. A user at client system130 may enter a Uniform Resource Locator (URL) or other addressdirecting the web browser 132 to a particular server (such as server162, or a server associated with a third-party system 170), and the webbrowser 132 may generate a Hyper Text Transfer Protocol (HTTP) requestand communicate the HTTP request to server. The server may accept theHTTP request and communicate to client system 130 one or more Hyper TextMarkup Language (HTML) files responsive to the HTTP request. Clientsystem 130 may render a webpage based on the HTML files from the serverfor presentation to the user. This disclosure contemplates any suitablewebpage files. As an example and not by way of limitation, webpages mayrender from HTML files, Extensible Hyper Text Markup Language (XHTML)files, or Extensible Markup Language (XML) files, according toparticular needs. Such pages may also execute scripts such as, forexample and without limitation, those written in JAVASCRIPT, JAVA,MICROSOFT SILVERLIGHT, combinations of markup language and scripts suchas AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein,reference to a webpage encompasses one or more corresponding webpagefiles (which a browser may use to render the webpage) and vice versa,where appropriate.

In particular embodiments, social-networking system 160 may be anetwork-addressable computing system that can host an online socialnetwork. Social-networking system 160 may generate, store, receive, andsend social-networking data, such as, for example, user-profile data,concept-profile data, social-graph information, or other suitable datarelated to the online social network. Social-networking system 160 maybe accessed by the other components of network environment 100 eitherdirectly or via network 110. As an example and not by way of limitation,client system 130 may access social-networking system 160 using a webbrowser 132, or a native application associated with social-networkingsystem 160 (e.g., a mobile social-networking application, a messagingapplication, another suitable application, or any combination thereof)either directly or via network 110. In particular embodiments,social-networking system 160 may include one or more servers 162. Eachserver 162 may be a unitary server or a distributed server spanningmultiple computers or multiple datacenters. Servers 162 may be ofvarious types, such as, for example and without limitation, web server,news server, mail server, message server, advertising server, fileserver, application server, exchange server, database server, proxyserver, another server suitable for performing functions or processesdescribed herein, or any combination thereof. In particular embodiments,each server 162 may include hardware, software, or embedded logiccomponents or a combination of two or more such components for carryingout the appropriate functionalities implemented or supported by server162. In particular embodiments, social-networking system 160 may includeone or more data stores 164. Data stores 164 may be used to storevarious types of information. In particular embodiments, the informationstored in data stores 164 may be organized according to specific datastructures. In particular embodiments, each data store 164 may be arelational, columnar, correlation, or other suitable database. Althoughthis disclosure describes or illustrates particular types of databases,this disclosure contemplates any suitable types of databases. Particularembodiments may provide interfaces that enable a client system 130, asocial-networking system 160, or a third-party system 170 to manage,retrieve, modify, add, or delete, the information stored in data store164.

In particular embodiments, social-networking system 160 may store one ormore social graphs in one or more data stores 164. In particularembodiments, a social graph may include multiple nodes—which may includemultiple user nodes (each corresponding to a particular user) ormultiple concept nodes (each corresponding to a particular concept)—andmultiple edges connecting the nodes. Social-networking system 160 mayprovide users of the online social network the ability to communicateand interact with other users. In particular embodiments, users may jointhe online social network via social-networking system 160 and then addconnections (e.g., relationships) to a number of other users ofsocial-networking system 160 to whom they want to be connected. Herein,the term “friend” may refer to any other user of social-networkingsystem 160 with whom a user has formed a connection, association, orrelationship via social-networking system 160.

In particular embodiments, social-networking system 160 may provideusers with the ability to take actions on various types of items orobjects, supported by social-networking system 160. As an example andnot by way of limitation, the items and objects may include groups orsocial networks to which users of social-networking system 160 maybelong, events or calendar entries in which a user might be interested,computer-based applications that a user may use, transactions that allowusers to buy or sell items via the service, interactions withadvertisements that a user may perform, or other suitable items orobjects. A user may interact with anything that is capable of beingrepresented in social-networking system 160 or by an external system ofthird-party system 170, which is separate from social-networking system160 and coupled to social-networking system 160 via a network 110.

In particular embodiments, social-networking system 160 may be capableof linking a variety of entities. As an example and not by way oflimitation, social-networking system 160 may enable users to interactwith each other as well as receive content from third-party systems 170or other entities, or to allow users to interact with these entitiesthrough an application programming interfaces (API) or othercommunication channels.

In particular embodiments, a third-party system 170 may include one ormore types of servers, one or more data stores, one or more interfaces,including but not limited to APIs, one or more web services, one or morecontent sources, one or more networks, or any other suitable components,e.g., that servers may communicate with. A third-party system 170 may beoperated by a different entity from an entity operatingsocial-networking system 160. In particular embodiments, however,social-networking system 160 and third-party systems 170 may operate inconjunction with each other to provide social-networking services tousers of social-networking system 160 or third-party systems 170. Inthis sense, social-networking system 160 may provide a platform, orbackbone, which other systems, such as third-party systems 170, may useto provide social-networking services and functionality to users acrossthe Internet.

In particular embodiments, a third-party system 170 may include athird-party content object provider. A third-party content objectprovider may include one or more sources of content objects, which maybe communicated to a client system 130. As an example and not by way oflimitation, content objects may include information regarding things oractivities of interest to the user, such as, for example, movie showtimes, movie reviews, restaurant reviews, restaurant menus, productinformation and reviews, or other suitable information. As anotherexample and not by way of limitation, content objects may includeincentive content objects, such as coupons, discount tickets, giftcertificates, or other suitable incentive objects.

In particular embodiments, social-networking system 160 also includesuser-generated content objects, which may enhance a user's interactionswith social-networking system 160. User-generated content may includeanything a user can add, upload, send, or “post” to social-networkingsystem 160. As an example and not by way of limitation, a usercommunicates posts to social-networking system 160 from a client system130. Posts may include data such as status updates or other textualdata, location information, photos, videos, links, music or othersimilar data or media. Content may also be added to social-networkingsystem 160 by a third-party through a “communication channel,” such as anewsfeed or stream.

In particular embodiments, social-networking system 160 may include avariety of servers, sub-systems, programs, modules, logs, and datastores. In particular embodiments, social-networking system 160 mayinclude one or more of the following: a web server, action logger,API-request server, relevance-and-ranking engine, content-objectclassifier, notification controller, action log,third-party-content-object-exposure log, inference module,authorization/privacy server, search module, advertisement-targetingmodule, user-interface module, user-profile store, connection store,third-party content store, or location store. Social-networking system160 may also include suitable components such as network interfaces,security mechanisms, load balancers, failover servers,management-and-network-operations consoles, other suitable components,or any suitable combination thereof In particular embodiments,social-networking system 160 may include one or more user-profile storesfor storing user profiles. A user profile may include, for example,biographic information, demographic information, behavioral information,social information, or other types of descriptive information, such aswork experience, educational history, hobbies or preferences, interests,affinities, or location. Interest information may include interestsrelated to one or more categories. Categories may be general orspecific. As an example and not by way of limitation, if a user “likes”an article about a brand of shoes the category may be the brand, or thegeneral category of “shoes” or “clothing.” A connection store may beused for storing connection information about users. The connectioninformation may indicate users who have similar or common workexperience, group memberships, hobbies, educational history, are in anyway related, or share common attributes. The connection information mayalso include user-defined connections between different users andcontent (both internal and external). A web server may be used forlinking social-networking system 160 to one or more client systems 130or one or more third-party system 170 via network 110. The web servermay include a mail server or other messaging functionality for receivingand routing messages between social-networking system 160 and one ormore client systems 130. An API-request server may allow a third-partysystem 170 to access information from social-networking system 160 bycalling one or more APIs. An action logger may be used to receivecommunications from a web server about a user's actions on or offsocial-networking system 160. In conjunction with the action log, athird-party-content-object log may be maintained of user exposures tothird-party-content objects. A notification controller may provideinformation regarding content objects to a client system 130.Information may be pushed to a client system 130 as notifications, orinformation may be pulled from client system 130 responsive to a requestreceived from client system 130. Authorization servers may be used toenforce one or more privacy settings of the users of social-networkingsystem 160. A privacy setting of a user determines how particularinformation associated with a user can be shared. The authorizationserver may allow users to opt in to or opt out of having their actionslogged by social-networking system 160 or shared with other systems(e.g., third-party system 170), such as, for example, by settingappropriate privacy settings. Third-party-content-object stores may beused to store content objects received from third parties, such as athird-party system 170. Location stores may be used for storing locationinformation received from client systems 130 associated with users.Advertisement-pricing modules may combine social information, thecurrent time, location information, or other suitable information toprovide relevant advertisements, in the form of notifications, to auser.

Social Graphs

FIG. 2 illustrates example social graph 200. In particular embodiments,social-networking system 160 may store one or more social graphs 200 inone or more data stores. In particular embodiments, social graph 200 mayinclude multiple nodes—which may include multiple user nodes 202 ormultiple concept nodes 204—and multiple edges 206 connecting the nodes.Example social graph 200 illustrated in FIG. 2 is shown, for didacticpurposes, in a two-dimensional visual map representation. In particularembodiments, a social-networking system 160, client system 130, orthird-party system 170 may access social graph 200 and relatedsocial-graph information for suitable applications. The nodes and edgesof social graph 200 may be stored as data objects, for example, in adata store (such as a social-graph database). Such a data store mayinclude one or more searchable or queryable indexes of nodes or edges ofsocial graph 200.

In particular embodiments, a user node 202 may correspond to a user ofsocial-networking system 160. As an example and not by way oflimitation, a user may be an individual (human user), an entity (e.g.,an enterprise, business, or third-party application), or a group (e.g.,of individuals or entities) that interacts or communicates with or oversocial-networking system 160. In particular embodiments, when a userregisters for an account with social-networking system 160,social-networking system 160 may create a user node 202 corresponding tothe user, and store the user node 202 in one or more data stores. Usersand user nodes 202 described herein may, where appropriate, refer toregistered users and user nodes 202 associated with registered users. Inaddition or as an alternative, users and user nodes 202 described hereinmay, where appropriate, refer to users that have not registered withsocial-networking system 160. In particular embodiments, a user node 202may be associated with information provided by a user or informationgathered by various systems, including social-networking system 160. Asan example and not by way of limitation, a user may provide his or hername, profile picture, contact information, birth date, sex, maritalstatus, family status, employment, education background, preferences,interests, or other demographic information. In particular embodiments,a user node 202 may be associated with one or more data objectscorresponding to information associated with a user. In particularembodiments, a user node 202 may correspond to one or more webpages.

In particular embodiments, a concept node 204 may correspond to aconcept. As an example and not by way of limitation, a concept maycorrespond to a place (such as, for example, a movie theater,restaurant, landmark, or city); a website (such as, for example, awebsite associated with social-network system 160 or a third-partywebsite associated with a web-application server); an entity (such as,for example, a person, business, group, sports team, or celebrity); aresource (such as, for example, an audio file, video file, digitalphoto, text file, structured document, or application) which may belocated within social-networking system 160 or on an external server,such as a web-application server; real or intellectual property (suchas, for example, a sculpture, painting, movie, game, song, idea,photograph, or written work); a game; an activity; an idea or theory; anobject in a augmented/virtual reality environment; another suitableconcept; or two or more such concepts. A concept node 204 may beassociated with information of a concept provided by a user orinformation gathered by various systems, including social-networkingsystem 160. As an example and not by way of limitation, information of aconcept may include a name or a title; one or more images (e.g., animage of the cover page of a book); a location (e.g., an address or ageographical location); a website (which may be associated with a URL);contact information (e.g., a phone number or an email address); othersuitable concept information; or any suitable combination of suchinformation. In particular embodiments, a concept node 204 may beassociated with one or more data objects corresponding to informationassociated with concept node 204. In particular embodiments, a conceptnode 204 may correspond to one or more webpages.

In particular embodiments, a node in social graph 200 may represent orbe represented by a webpage (which may be referred to as a “profilepage”). Profile pages may be hosted by or accessible tosocial-networking system 160. Profile pages may also be hosted onthird-party websites associated with a third-party server 170. As anexample and not by way of limitation, a profile page corresponding to aparticular external webpage may be the particular external webpage andthe profile page may correspond to a particular concept node 204.Profile pages may be viewable by all or a selected subset of otherusers. As an example and not by way of limitation, a user node 202 mayhave a corresponding user-profile page in which the corresponding usermay add content, make declarations, or otherwise express himself orherself. As another example and not by way of limitation, a concept node204 may have a corresponding concept-profile page in which one or moreusers may add content, make declarations, or express themselves,particularly in relation to the concept corresponding to concept node204.

In particular embodiments, a concept node 204 may represent athird-party webpage or resource hosted by a third-party system 170. Thethird-party webpage or resource may include, among other elements,content, a selectable or other icon, or other inter-actable object(which may be implemented, for example, in JavaScript, AJAX, or PHPcodes) representing an action or activity. As an example and not by wayof limitation, a third-party webpage may include a selectable icon suchas “like,” “check-in,” “eat,” “recommend,” or another suitable action oractivity. A user viewing the third-party webpage may perform an actionby selecting one of the icons (e.g., “check-in”), causing a clientsystem 130 to send to social-networking system 160 a message indicatingthe user's action. In response to the message, social-networking system160 may create an edge (e.g., a check-in-type edge) between a user node202 corresponding to the user and a concept node 204 corresponding tothe third-party webpage or resource and store edge 206 in one or moredata stores.

In particular embodiments, a pair of nodes in social graph 200 may beconnected to each other by one or more edges 206. An edge 206 connectinga pair of nodes may represent a relationship between the pair of nodes.In particular embodiments, an edge 206 may include or represent one ormore data objects or attributes corresponding to the relationshipbetween a pair of nodes. As an example and not by way of limitation, afirst user may indicate that a second user is a “friend” of the firstuser. In response to this indication, social-networking system 160 maysend a “friend request” to the second user. If the second user confirmsthe “friend request,” social-networking system 160 may create an edge206 connecting the first user's user node 202 to the second user's usernode 202 in social graph 200 and store edge 206 as social-graphinformation in one or more of data stores 164. In the example of FIG. 2,social graph 200 includes an edge 206 indicating a friend relationbetween user nodes 202 of user “A” and user “B” and an edge indicating afriend relation between user nodes 202 of user “C” and user “B.”Although this disclosure describes or illustrates particular edges 206with particular attributes connecting particular user nodes 202, thisdisclosure contemplates any suitable edges 206 with any suitableattributes connecting user nodes 202. As an example and not by way oflimitation, an edge 206 may represent a friendship, family relationship,business or employment relationship, fan relationship (including, e.g.,liking, etc.), follower relationship, visitor relationship (including,e.g., accessing, viewing, checking-in, sharing, etc.), subscriberrelationship, superior/subordinate relationship, reciprocalrelationship, non-reciprocal relationship, another suitable type ofrelationship, or two or more such relationships. Moreover, although thisdisclosure generally describes nodes as being connected, this disclosurealso describes users or concepts as being connected. Herein, referencesto users or concepts being connected may, where appropriate, refer tothe nodes corresponding to those users or concepts being connected insocial graph 200 by one or more edges 206.

In particular embodiments, an edge 206 between a user node 202 and aconcept node 204 may represent a particular action or activity performedby a user associated with user node 202 toward a concept associated witha concept node 204. As an example and not by way of limitation, asillustrated in FIG. 2, a user may “like,” “attended,” “played,”“listened,” “cooked,” “worked at,” or “watched” a concept, each of whichmay correspond to an edge type or subtype. A concept-profile pagecorresponding to a concept node 204 may include, for example, aselectable “check in” icon (such as, for example, a clickable “check in”icon) or a selectable “add to favorites” icon. Similarly, after a userclicks these icons, social-networking system 160 may create a “favorite”edge or a “check in” edge in response to a user's action correspondingto a respective action. As another example and not by way of limitation,a user (user “C”) may listen to a particular song (“Imagine”) using aparticular application (SPOTIFY, which is an online music application).In this case, social-networking system 160 may create a “listened” edge206 and a “used” edge (as illustrated in FIG. 2) between user nodes 202corresponding to the user and concept nodes 204 corresponding to thesong and application to indicate that the user listened to the song andused the application. Moreover, social-networking system 160 may createa “played” edge 206 (as illustrated in FIG. 2) between concept nodes 204corresponding to the song and the application to indicate that theparticular song was played by the particular application. In this case,“played” edge 206 corresponds to an action performed by an externalapplication (SPOTIFY) on an external audio file (the song “Imagine”).Although this disclosure describes particular edges 206 with particularattributes connecting user nodes 202 and concept nodes 204, thisdisclosure contemplates any suitable edges 206 with any suitableattributes connecting user nodes 202 and concept nodes 204. Moreover,although this disclosure describes edges between a user node 202 and aconcept node 204 representing a single relationship, this disclosurecontemplates edges between a user node 202 and a concept node 204representing one or more relationships. As an example and not by way oflimitation, an edge 206 may represent both that a user likes and hasused at a particular concept. Alternatively, another edge 206 mayrepresent each type of relationship (or multiples of a singlerelationship) between a user node 202 and a concept node 204 (asillustrated in FIG. 2 between user node 202 for user “E” and conceptnode 204 for “SPOTIFY”).

In particular embodiments, social-networking system 160 may create anedge 206 between a user node 202 and a concept node 204 in social graph200. As an example and not by way of limitation, a user viewing aconcept-profile page (such as, for example, by using a web browser or aspecial-purpose application hosted by the user's client system 130) mayindicate that he or she likes the concept represented by the conceptnode 204 by clicking or selecting a “Like” icon, which may cause theuser's client system 130 to send to social-networking system 160 amessage indicating the user's liking of the concept associated with theconcept-profile page. In response to the message, social-networkingsystem 160 may create an edge 206 between user node 202 associated withthe user and concept node 204, as illustrated by “like” edge 206 betweenthe user and concept node 204. In particular embodiments,social-networking system 160 may store an edge 206 in one or more datastores. In particular embodiments, an edge 206 may be automaticallyformed by social-networking system 160 in response to a particular useraction. As an example and not by way of limitation, if a first useruploads a picture, watches a movie, or listens to a song, an edge 206may be formed between user node 202 corresponding to the first user andconcept nodes 204 corresponding to those concepts. Although thisdisclosure describes forming particular edges 206 in particular manners,this disclosure contemplates forming any suitable edges 206 in anysuitable manner.

Location Information

In particular embodiments, the social-networking system 160 maydetermine a geographic location (hereinafter also “location”) of anobject (e.g., a user, a concept, or a mobile-client system 130associated with a user or concept). The location of an object may beidentified and stored as a street address (e.g., “1601 Willow Road,Menlo Park, Calif.”), a set of geographic coordinates (e.g., latitudeand longitude), a reference to another location or object (e.g., “thecoffee shop next to the train station”), a reference to a map tile(e.g., “map tile 32”), or using another suitable identifier. Inparticular embodiments, the location of an object may be provided by auser of an online social network. As an example and not by way oflimitation, a user may input his location by checking-in at the locationor otherwise providing an indication of his location. As another exampleand not by way of limitation, a user may input the location of a concept(e.g., a place or venue) by accessing the profile page for the conceptand entering the location information (e.g., the stress address) of theconcept.

In particular embodiment, the location of a mobile-client system 130equipped with cellular, Wi-Fi, Global Positioning System (GPS), or othersuitable capabilities may be identified with geographic-positioningsignals. As an example and not by way of limitation, a mobile-clientsystem 130 may include one or more sensors that may facilitategeo-location functionalities of the system. Processing of sensor inputsby the mobile-client system 130 with one or more sensor devices (forexample, processing a GPS sensor signal and displaying in the device'sgraphical user interface a map of a location corresponding to the GPSsensor signal) may be implemented by a combination of hardware,software, and/or firmware (or device drivers). Geographic-positioningsignals may be obtained by cell tower triangulation, Wi-Fi positioning,or GPS positioning. In particular embodiments, a geographic location ofan Internet-connected computer can be identified by the computer's IPaddress. A mobile-client system 130 may also have additionalfunctionalities incorporating geographic-location data of the device,such as, for example, providing driving directions, displaying a map ofa current location, or providing information of nearby points ofinterest such as restaurants, gas stations, etc. As an example and notby way of limitation, a web browser application on the mobile-clientsystem 130 may access a mapping library (e.g., via a function call) thatgenerates a map containing a GPS location obtained by a device driverinterpreting a GPS signal from a GPS sensor, and display the map in theweb browser application's graphical user interface. In particularembodiments, the location of a user may be determined from a searchhistory associated with the user. As an example and not by way oflimitation, if a particular user has previously queried for objects in aparticular location, the social-networking system 160 (or thesearch-engine system 170) may assume that the user is still at thatparticular location. Although this disclosure describes determining thelocation of an object in a particular manner, this disclosurecontemplates determining the location of an object in any suitablemanner.

In particular embodiments, the social-networking system 160 may maintaina database of information relating to locations or places. Thesocial-networking system 160 may also maintain meta information aboutparticular locations or places, such as, for example, photos of alocation or place, advertisements, user reviews, comments, “check-in”activity data, “like” activity data, hours of operation, or othersuitable information related to the location or place. In particularembodiments, a location or place may correspond to a concept node 204 ina social graph 200. The social-networking system 160 may allow users toaccess information regarding a location or place using a clientapplication (e.g., a web browser or other suitable application) hostedby a mobile-client system 130. As an example and not by way oflimitation, social-networking system 160 may serve webpages (or otherstructured documents) to users that request information about a locationor place. In addition to user profile and location information, thesystem may track or maintain other information about the user. As anexample and not by way of limitation, the social-networking system 160may support geo-social-networking functionality including one or morelocation-based services that record the user's location. As an exampleand not by way of limitation, users may access the geo-social-networkingsystem using a special-purpose client application hosted by amobile-client system 130 of the user (or a web- or network-basedapplication using a browser client). The client application mayautomatically access GPS or other geo-location functions supported bythe mobile-client system 130 and report the user's current location tothe geo-social-networking system. In addition, the client applicationmay support geo-social networking functionality that allows users to“check-in” at various locations or places and communicate this locationor place to other users. A check-in to a given location or place mayoccur when a user is physically located at a location or place and,using a mobile-client system 130, access the geo-social-networkingsystem to register the user's presence at the location or place. Thesocial-networking system 160 may automatically check-in a user to alocation or place based on the user's current location and past locationdata. In particular embodiments, the social-networking system 160 mayallow users to indicate other types of relationships with respect toparticular locations or places, such as “like,” “fan,” “worked at,”“recommended,” “attended,” or another suitable type of relationship. Inparticular embodiments, “check-in” information and other relationshipinformation may be represented in the social graph 200 as an edge 206connecting the user node 202 of the user to the concept node 204 of thelocation or place.

Redirection Graphs for Place-Entities

In particular embodiments, social-networking system 160 may determineone or more places where a user is most likely located based ongeographic-location information received from the user's mobile-clientsystem 130 (e.g., a smartphone) or based on social-networkinginformation associated with the user or the user's location.

As used herein, a “place” may refer to a distinct, identifiable, ordefined physical area, space, or location, such as for example, anairport, park, shopping mall, train station, bus stop, business,corporate campus, college campus, stadium, amusement park, museum,house, building, neighborhood, city, store, movie theater, restaurant,or landmark. Examples of places include Sancho's Taqueria, Big AppleCleaners, Columbus Circle, Central Park, Times Square, the Golden GateBridge, LaGuardia airport, Disneyland, the Louvre, and the Eiffel Tower.In particular embodiments, a place may be referred to as a physicalplace or a geographic place. In particular embodiments, a place maycorrespond to a particular place-entity represented by a particular nodein social graph 200 (e.g., a concept node 204 associated with aparticular geographic location). For example, the physical placeLaGuardia airport may correspond to a place-entity “LaGuardia airport,”which is represented by a concept node 204 in social graph 200. Althoughthis disclosure describes and illustrates particular places whichcorrespond to particular place-entities, this disclosure contemplatesany suitable places which correspond to any suitable place-entities. Inparticular embodiments, a place may have any suitable size or dimension(e.g., a length or width of 1 meter, 10 meters, 100 meters, 1 kilometer,10 kilometers, or any other suitable distance). As an example and not byway of limitation, a place may correspond to a coffee shop withdimensions of approximately 5 meters by 10 meters. In particularembodiments, one or more places may be located nearby or containedwithin one or more other places. As an example and not by limitation, anairport is a place that may contain multiple other places, such as forexample stores or restaurants. Additionally, an airport may havemultiple other places located nearby, such as for example, bus stops,hotels, or parking lots. As another example and not by way oflimitation, a multi-story building may be considered a place, and thebuilding may also include one or more other places, such as for example,stores or businesses located within the building. Although thisdisclosure describes and illustrates particular places having particularsizes and containing or being located nearby particular other places,this disclosure contemplates any suitable places having any suitablesizes and containing or being located nearby any suitable other places.

In particular embodiments, a place-entities graph may represent aplurality of concept nodes 204 each corresponding to a place-entityhaving a particular geographic location. As an example and not by way oflimitation, social-networking system 160 may have a masterplace-entities graph that includes all concept nodes 204 identified asplace-entity nodes in the social graph 200. In particular embodiments,additional functionalities of the place-entities graph may be needed toimprove searches of the place-entities graph for a largesocial-networking system 160 with a large number of nodes of socialgraph 200 and a large number of place-entities in the place-entitiesgraph.

In particular embodiments, custom redirection graphs may be generatedfor a set of place-entity nodes or a place-entities graph to improvefunctionalities of social-networking system 160 that requireidentification of place-entities. In particular embodiments, the customredirection graphs may be used to perform various searches based on acontext of the search. As an example and not by way of limitation, thecustom redirection graphs may be used to create custom place-entitygraphs for different types of search functions, such that differententities may be presented in a check-in context, a tagging context, or arecommendation context. In particular embodiments, social-networkingsystem 160 may access a master place-entities graph forsocial-networking system 160 which indexes all place-entities associatedwith social-networking system 160. In particular embodiments, theplace-entities may be generated from third-party data. As an example andnot by way of limitation, the place-entities may be generated from anexternal website or database. In particular embodiments, theplace-entities may be generated from partner sites of social-networkingsystem 160. In particular embodiments, the place-entities may be usergenerated. In particular embodiments, the place-entities may begenerated from any other suitable source.

In particular embodiments, the master place-entities graph may include anumber of low-quality place-entities. This may occur in the context of alarge social-networking system with potentially millions or billions ofassociated users and entities, any of whom may generate a place-entityand an associated place-entity node to add to the master place-entitiesgraph. In particular embodiments, multiple place-entities may compriseduplicate locations. As an example and not by way of limitation, theremay be multiple place-entities generated for Grand Central Station inNew York City. In particular embodiments, particular place-entities maybe more popular than other place-entities with users ofsocial-networking system 160. In particular embodiments, place-entitiesmay be user-specific. As an example and not by way of limitation, aparticular user may generate a place-entity at their home called “Toby'sPad.” This place-entity is likely irrelevant to users except theparticular user and potentially friends or family of the particularuser.

In particular embodiments, to improve the quality of the place-entitiesgraph, three processes may be performed to create a redirection graph.These three processes may be: a suppression process to removelow-quality place-entities (also called a junk detection process); adeduplication process to determine whether a group of place-entity nodesare related and may be clustered; and a best-page selection process tofind the best representative place-entity (a “canonical” place-entitynode) for a plurality of related place-entities. In particularembodiments, these processes may be adjusted based on the particularneeds or use-case for the place-entities graph. In particularembodiments, separate redirection graphs may be created where eachredirection graph is suitable for a particular use or purpose.

In particular embodiments, a suppression process may either remove orsuppress place-entities determined to be of low quality. In particularembodiments, removing a place-entity may mean removing the place-entityfrom the master place-entity graph. In particular embodiments,suppressing a place-entity may mean lowering the rank of the particularplace-entity so that it is highly unlikely to be returned in response toa search query. As an example and not by way of limitation, an officialpage of social-networking system 160 titled “New York City” may be aplace-entity with a high quality-score indicating that it is ahigh-quality place-entity, while an individual user's fan page titled“Joe Loves New York” may be determined to be of low quality, and eitherun-indexed or down-ranked in the place-entities graph. In particularembodiments, determining the quality of a page may be based on a numberof factors, including the accuracy of attributes associated with theplace-entity; a number of photos or other media content associated withthe place-entity; an amount of content associated with the place-entity;or social signals such as likes, check-ins, or other interactionsthrough social-networking system 160 with the place-entity. As anexample and not by way of limitation, attributes of a place-entity mayinclude a category of place such as a home, a store, a park, etc.;operating hours for the place-entity; an address of the place-entity(including an attribute for whether the address is even known); orlatitude and longitude coordinates of the place-entity. In particularembodiments, determining the quality of a place-entity may furtherinclude an indication of how aggressive the suppression ofplace-entities for a given context should be. As an example and not byway of limitation, in a context of recommending places to a user,social-networking system 160 may determine that low-qualityplace-entities should be highly suppressed (by setting a high thresholdquality-score) so that users are presented with real, high-qualityplace-entities, while in a context of tagging, social-networking system160 may not place as great an importance on elimination of alllow-quality place-entities, in order for users to customize theirtagging. In particular embodiments, the suppression process may output afiltered place-entities graph. As an example and not by way oflimitation, the filtered place-entities graph may have un-indexed alllow-quality place-entities. As another example and not by way oflimitation, the filtered place-entities graph may comprise the masterplace-entities graph with quality-scores associated with eachplace-entity, allowing suppression of low-scoring results in futuresearches. The suppression process is described in further detail below.

In particular embodiments, the deduplication and best-page selectionprocesses may be applied to a filtered place-entities graph after asuppression process. In particular embodiments, the deduplication andbest-page selection processes may occur prior to the suppression processor in concurrence with the suppression process. In particularembodiments, the deduplication process may identify similar or duplicateplace-entity nodes and create place-entity clusters based on theidentification. In particular embodiments, a pairwise duplicationcomparison may be performed to generate a duplication-score for aparticular pair of place-entity nodes. In particular embodiments, theduplication-score may represent a likelihood that the two place-entitynodes are duplicates. In particular embodiments, determination ofduplicate place-entities may be a determination that two or moreplace-entity nodes are referring to the same place-entity or geographiclocation. As an example and not by way of limitation, a place-entitynode “New York City” and a place-entity node “I Heart NYC” may bothrefer to the geographic location of the city of New York, New York.Place-entity clusters may be created based on the duplication-scores,where a particular cluster may correspond to the same place-entity. Inparticular embodiments, a threshold duplication-score may be determinedfor determining whether two or more place-entity nodes should be in thesame cluster. If the duplication-score for a pair of place-entities isgreater than the threshold score, then the two place-entities may begrouped into the same place-entity cluster. If the duplication-scoredoes not exceed the threshold, then the two place-entities are notplaced into the same place-entity cluster.

In particular embodiments, a place-entity cluster may include abest-quality, or canonical, place-entity, as determined by a best-pageselection process. As an example and not by way of limitation, anofficial page of social-networking system 160 for “New York City” may berecognized as the canonical place-entity for New York City, N.Y., whilea page titled “The City That Never Sleeps” may be determined to be alower-quality, duplicate place-entity. In particular embodiments, aredirect from a lower-quality place-entity to a canonical place-entitymay be based on the duplication-score between the two place-entities.The redirect may be based on a threshold redirect-score to be comparedto the duplication-score. As an example and not by way of limitation, ifa threshold redirect-score is set relatively low, then most pairs oflow-quality and canonical place-entities will have duplication-scoresexceeding the threshold, and a redirect to the canonical place-entitymay occur. As another example and not by way of limitation, if thethreshold redirect-score is set relatively high, then onlyplace-entities with a high duplication-score (indicating a high degreeof similarity) may be redirected to the canonical place-entity. Asanother example and not by way of limitation, if a threshold score isset very low, any place-entity that includes “Central Park” in its nameor description may be redirected to a canonical place-entity node titled“Central Park.” If the threshold score is set higher, then a “CentralPark” place-entity that has a relatively lower duplication-score (suchas place-entity “Central Park West”) may not be redirected to thecanonical “Central Park” place-entity. In particular embodiments, thethreshold redirect-score may be higher than the thresholdduplication-score. This may mean that two or more place-entity nodes maybe in the same place-entity cluster by exceeding the thresholdduplication-score, but they may not redirect to the canonicalplace-entity node if the duplication-scores do not exceed the thresholdredirect-score. In particular embodiments, the threshold redirect-scoremay be equal to the threshold duplication-score. In this embodiment, forall place-entities of a particular place-entity cluster, allnon-canonical place-entity nodes may be redirected to the canonicalplace-entity node. The process of evaluating the deduplication processfor selection of a canonical place-entity node is discussed furtherbelow.

In particular embodiments, the suppression, deduplication, and best-pageselection processes may result in a redirection graph to be applied toparticular use cases. As an example and not by way of limitation, aredirection graph may include the master place-entities graph withquality (e.g. suppression) and duplication scores assigned to eachplace-entity node, as well as redirect-edges between nodes based onbest-page selection. In particular embodiments, the structure and scoresfor a particular redirection graph may depend on the input parametersapplied for the suppression and deduplication processes.

FIG. 3 illustrates an example place-entities graph. Place-entity nodes301-309 each correspond to a concept node 204 of the social graph 200that corresponds to a location or place. In the example of FIG. 3,place-entity nodes may correspond to official pages of a location orplace such as 304 “New York City” or 305 “New York University.” In theexample of FIG. 3, other place-entity nodes may be user-generated, suchas 303 “I Heart NYC,” 302 “Running in Central Park,” 309 “at the park,”or 308 “on the couch.” In the example place-entities graph of FIG. 3,without any further processing in the graph, all of these place-entitynodes are considered similarly for identification of a place-entity,such as a search. As an example and not by way of limitation, if a usersearches for the term “Central Park,” both 301 “Central Park” and 302“Running in Central Park” may be surfaced.

FIG. 4 illustrates an example redirection graph for the place-entitiesgraph of FIG. 3. In the example of FIG. 4, relatively tight suppressionand deduplication parameters have been implemented to eliminate “junk”place-entities and redirect lower-quality place-entities to canonicalplace-entities. As an example and not by way of limitation, relativelytight parameters may be used in the context of searching place-entitiesfor a check-in or to recommend nearby places. As another example and notby way of limitation, the threshold scores for suppression anddeduplication may comprise a high threshold quality-score, a lowthreshold duplication-score, and a low threshold redirect-score, whichmay increase the chances that a particular place-entity node may besuppressed (by failing to meet the threshold quality-score) orredirected (by exceeding the threshold duplication-score andredirect-score). In these contexts, it may be desirable for users tofind or check-in to places that are real or official, and of highquality. In the example of FIG. 4, the suppression process may assignquality-scores and duplication-scores to each place-entity 301-309, andthe deduplication process may redirect particular place-entities to aduplicate, canonical place-entity. In the example of FIG. 4, theseprocesses may result in place-entity 308 “on the couch, ” 307 “near 30Rock,” and 309 “at the park” suppressed by being assigned lowquality-scores (represented in FIG. 4 by being grayed-out), and based ontheir respective duplication-scores, place-entity 302 “Running inCentral Park” redirected to 301 “Central Park,” and place-entities 303“I Heart NYC” and 306 “The Big Apple” redirected to 304 “New York City.”In this example illustration, if a user attempts to check-in or islooking for nearby places, the available place-entities for selection(depending on the search terms) are real, canonical place-entities 301“Central Park,” 304 “New York City,” or 305 “New York University.” Inparticular embodiments, the remaining place-entity nodes are eithersuppressed or un-indexed from the place-entities graph, or areredirected to the canonical place-entities.

FIG. 5 illustrates an example redirection graph for the place-entitiesgraph of FIG. 3, where the suppression and deduplication parameters arelooser compared to the example of FIG. 4. In particular embodiments,looser parameters may be applied in a location-tagging application, inorder to provide users with additional options. In the example of FIG.5, the suppression process may still provide quality-scores for eachplace-entity 301-309, but the difference between the high-quality nodesand “junk” nodes may be less significant than the example of FIG. 4.Additionally, the threshold scores may be adjusted to allow somelower-scoring place-entity nodes to remain without being suppressed orredirected. In the example of FIG. 5, an increased thresholdduplication-score and an adjusted deduplication process to lowerduplication-scores between place-entity nodes may decrease the number ofredirections, so that place-entities 302 “Running in Central Park,” 303“I Heart NYC,” and 306 “The Big Apple” are no longer redirected,although their duplication-scores are still higher than the thresholdduplication-score (meaning that they are still clustered to the otherplace-entity nodes without being redirected), the thresholdquality-score may be lowered so that place-entity 308 “on the couch” isnot suppressed, and the place-entity 307 “near 30 Rock” is notsuppressed but is now redirected to 304 “New York City.”

In particular embodiments, two or more redirection graphs may becombined or “stacked” hierarchically or applied together. As an exampleand not by way of limitation, each of the two or more redirection graphsmay be created for different purposes, and may be applied together if aredirection graph is desired for the various purposes. As an example andnot by way of limitation, a first graph may handle redirecting alternatenames or abbreviations, such as redirecting from “The City that NeverSleeps” to “New York City,” or “SFO” to “San Francisco Airport.” Asecond graph may handle language translations, such as redirecting“Nueva York” to “New York City.” In a particular application, bothgraphs may be applied to ensure that regardless of language,abbreviations, or alternate terms being used, a high-quality, canonicalplace-entity is identified so the other place-entities can beredirected. As another example and not by way of limitation, a firstredirection graph may be used to correct spelling (e.g. redirecting “NewYrok” to “New York”), then a second redirection graph may be used forcheck-in or tagging or other applications.

In particular embodiments, a user may provide a search input tosocial-networking system 160 to access one or more place-entities. Inparticular embodiments, an application performing the search may accessa particular redirection graph for the place-entities, based on thecontext. As an example and not by way of limitation, if the user isproviding a search input in order to check-in at a location, anapplication may access a redirection graph created for that purpose. Inparticular embodiments, based on the selected redirection graph and thesearch input, a set of matching place-entities may be determined. Inparticular embodiments, the matching place-entities may be ranked orscored based on the quality and duplication scores from the redirectiongraph, as well as the existence of canonical place-entity nodes withrespect of the matching place-entities. In particular embodiments, thequality-scoring process may also account for parameters specific to theuser providing the search input. As an example and not by way oflimitation, the user's current location may be used to adjust thequality-scores for place-entities in proximity to the current location.As another example and not by way of limitation, a user's connections onsocial-networking system 160 may be used to adjust the scores. Using theexample of FIG. 3, for most user search requests for check-ins,place-entity node 308 “on the couch” may be suppressed as beinglow-quality. However, if social-networking system 160 determines thatthe user providing the search input is the user that generatedplace-entity node 308, or is a first-degree connection to the user thatgenerated place-entity 308, the suppression process may not suppressplace-entity 308 for that user, while still suppressing it for otherusers who are not associated with the generating user.

In particular embodiments, based on the ranking and scoring of matchingplace-entities, a number of top-scoring entities may be selected. Inparticular embodiments, a redirect process may be applied to resolve anyredirects between the selected place-entities. As an example and not byway of limitation, a high-scoring place-entity node may still beredirected to canonical place-entity nodes. In particular embodiments,after the redirect process is applied, a number of place-entities areprovided to the user. As an example and not by way of limitation, if theuser is sending a search input for a check-in using a typeahead feature,the top 7 place-entities corresponding to the search string alreadyentered that remain after the suppression, deduplication, and best-pageselection processes may be provided to the user. In particularembodiments, the top place-entities provided to a user may vary based onthe redirection graph used and the suppression, deduplication, andbest-page selection parameters used to generate the redirection graph.As an example and not by way of limitation, using a first redirectiongraph, place-entity A may redirect to place-entity B; using a secondredirection graph, place-entity A may redirect to place-entity C; andusing a third redirection graph, place-entity A may be suppressed.

In particular embodiments, redirection graphs may be personalized oradjusted to specific users or groups of users. As an example and not byway of limitation, users who are tourists to a particular region maygenerally visit popular places and may not be familiar with alternatenames or abbreviations for places, while users who are locals may visitless well-known places and use alternate names or abbreviations morefrequently. In particular embodiments, two separate redirection graphsmay be generated; one for tourists and one for locals. In particularembodiments, one redirection graph may be used for both groups of users,but different thresholds may be applied to the suppression, duplication,and redirect scores within the graph. As an example and not by way oflimitation, a tourist may have their threshold quality-score,duplication-score, and redirect-score adjusted to suppress a greaternumber of place-entity nodes and redirect more place-entity nodes totheir respective canonical place-entity nodes.

In particular embodiments, A/B testing may be used to two or moreredirection graphs in order to determine which graph performs better. Asan example and not by way of limitation, two redirection graphs may begenerated for the purposes of check-ins, using two different sets ofinput parameters for the suppression and deduplication processes. Thetwo redirection graphs may be used with users and user responses may bemeasured in order to determine which redirection graph results in abetter user experience. In particular embodiments, the A/B testingresults may be used to improve generation of redirection graphs or toimprove the selection of a redirection graph for a particular user. Inparticular embodiments, the A/B testing may be used to adjust thresholdscores for the particular user or a group of users.

FIG. 6 illustrates an example method 600 for generating a redirectiongraph. The method may begin at step 610, where social-networking system160 may receive a threshold duplication-value and a thresholdredirect-value from a search client. In particular embodiments, thesearch client may be one of a plurality of search clients ofsocial-networking system 160. In particular embodiments, the thresholdduplication-value and the threshold redirect-value may be associatedwith the search client. In particular embodiments, the thresholdduplication-value may be a threshold to determine whether to cluster twoor more place-entities based on the duplication-value for theplace-entities. In particular embodiments, the threshold redirect-valuemay be a threshold to determine whether to redirect a place-entity toanother place-entity in the same place-entity cluster. In particularembodiments, social-networking system 160 may also receive a thresholdquality-score from the search client. In particular embodiments, thethreshold quality-score may be a threshold to determine whether tosuppress a particular place-entity so it does not appear as a searchresult.

At step 620, social-networking system 160 may access a place-entitiesgraph. In particular embodiments, the place-entities graph comprises aplurality of place-entity nodes, each place-entity node representing aplace-entity associated with a particular geographic location.

At step 630, social-networking system 160 may calculate a quality-scorefor each place-entity node of the plurality of place-entity nodes. Inparticular embodiments, the quality-score for a particular place-entitynode may be based on one or more of: an accuracy of attributes of aplace-entity associated with the place-entity node; a number of photosassociated with the place-entity on social-networking system 160; anamount of content associated with the place-entity; a recency-valueassociated with the content or photos; or a number of social signalsassociated with the place-entity. In particular embodiments, socialsignals may include check-ins, likes, comments, views, or reviews of theplace-entity provided by users of social-networking system 160.

At step 640, social-networking system 160 may identify place-entityclusters within the place-entities graph. In particular embodiments,each place-entity cluster may comprise place-entity nodes havingduplication-values with respect to at least one other place-entity nodein the place-entity cluster above the threshold duplication-value. Inparticular embodiments, the duplication-value for the place-entity nodewith respect to the other place-entity node may represent a likelihoodthat the two place-entity nodes each correspond to the same geographiclocation. In particular embodiments, a duplication-value may becalculated for each pair of place-entity nodes.

In particular embodiments, one of the place-entity nodes for aplace-entity cluster may be selected as the canonical place-entity node,based at least in part on a duplication-value between the place-entitynodes of the place-entity cluster. In particular embodiments, selectionof the canonical place-entity node may be based on a human reviewer'sinput, or through machine learning processes. In particular embodiments,the canonical place-entity node may be further based on thequality-scores for the place-entity nodes of the place-entity cluster.As an example and not by way of limitation, the canonical place-entitynode may have the highest quality-score in the place-entity cluster.

At step 650, social-networking system 160 may generate a redirectiongraph for the search client. In particular embodiments, the redirectiongraph may be based on the place-entities graph, and may comprise theplurality of place-entity nodes and the identified place-entityclusters, wherein for each place-entity node in each place-entitycluster, a redirection edge may be established between the place-entitynode and the respective canonical place-entity node for the place-entitycluster if the duplication-value for the place-entity node is greaterthan the threshold redirect-value. In particular embodiments, thethreshold redirect-value may be adjusted based on how “canonical” orofficial the canonical place-entity node is in comparison to the otherplace-entity nodes in the cluster. In particular embodiments, theredirection graph may be filtered by removing one or more place-entitynodes having quality-scores below the threshold quality-score.

In particular embodiments, a user may send a search query via the searchclient to social-networking system 160, where the search query isassociated with a particular place-entity node in a particularplace-entity cluster having a particular place-entity node. If theparticular place-entity node is connected to the particular canonicalplace-entity node by a redirection edge in the generated redirectiongraph, then the response to the search query may be a reference to theparticular canonical place-entity node; else the response may be areference to the particular place-entity node. In particularembodiments, social-networking system 160 may determine that the user isan administrator of the particular place-entity node or itscorresponding page. If the user is an administrator of the particularplace-entity node, and there is a redirection edge to the particularcanonical place-entity node, social-networking system 160 may overridethe redirection edge and provide a response that is the particularplace-entity node. In particular embodiments, if the particularplace-entity node has a quality-score that is less than the thresholdquality-score, the response to the search query may be a reference tothe particular canonical place-entity node. In particular embodiments,the threshold duplication-value and the threshold redirect-value may bebased on attributes of the user sending the search query.

In particular embodiments, social-networking system 160 may access asocial graph of social-networking system 160 and determine asocial-graph affinity for the user with respect to the particularplace-entity node. If the user has a social-graph affinity greater thana threshold affinity, and the particular place-entity node is connectedto the particular canonical place-entity node by a redirection edge,social-networking system 160 may override the redirection edge and senda reference to the particular place-entity node as the response to theuser.

In particular embodiments, a user may send a search query via the searchclient to social-networking system 160. Social-networking system 160 maydetermine a plurality of place-entity nodes matching the search querywithin the redirection graph for the search client. In particularembodiments, the plurality of place-entity nodes may be ranked based ontheir respective quality-scores, and social-networking system 160 maysend a set of results to the user comprising the place-entity nodesabove a threshold ranking. In particular embodiments, if the user hassocial-graph affinity with one or more of the place-entity nodes greaterthan a threshold affinity, social-networking system 160 may boost theranking of the one or more place-entity nodes.

Particular embodiments may repeat one or more steps of the method ofFIG. 6, where appropriate. Although this disclosure describes andillustrates particular steps of the method of FIG. 6 as occurring in aparticular order, this disclosure contemplates any suitable steps of themethod of FIG. 6 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates an example method forgenerating a redirection graph, including the particular steps of themethod of FIG. 6, this disclosure contemplates any suitable method forgenerating a redirection graph including any suitable steps, which mayinclude all, some, or none of the steps of the method of FIG. 6, whereappropriate. Furthermore, although this disclosure describes andillustrates particular components, devices, or systems carrying outparticular steps of the method of FIG. 6, this disclosure contemplatesany suitable combination of any suitable components, devices, or systemscarrying out any suitable steps of the method of FIG. 6.

Identification of Low-Quality Place-Entities

In particular embodiments, place-entities may be added to a database ofsocial-networking system 160 from different sources. As an example andnot by way of limitation, place-entities may be added from an externaldatabase, business owners, web crawlers, or from individual users. Inparticular embodiments, user-created place-entities may be input byusers when they are at a particular geographic location. As an exampleand not by way of limitation, a particular user may be at the GoldenGate Bridge in San Francisco, Calif., and choose to add a place-entityto social-networking system 160 titled “Golden Gate Bridge.” Inparticular embodiments, a user-created place may be associated with anexisting place-entity node of social graph 200. As an example and not byway of limitation, continuing the example above, when the user inputs aplace-entity with the title “Golden Gate Bridge”, the user may link thisplace-entity to a place-entity node on social graph 200 called “GoldenGate Bridge”. Social-networking system 160 may then associate thenewly-added place-entity with this place-entity node. In particularembodiments, a user may not associate the newly-added place-entity withan existing place-entity node of social graph 200. As an example and notby way of limitation, if a user attempts to check-in while at YankeeStadium in New York City, but does not associate the check-in place withthe existing place-entity node “Yankee Stadium” on social-networkingsystem 160, the newly added “Yankee Stadium” place-entity may not beassociated with any place-entity nodes of social-networking system 160.As another example and not by way of limitation, a user may create:place-entities for private places such as their personal homes;non-place-entities such as organizations or online stores; events; orirregular names. As another example and not by way of limitation, a usermay create a place-entity for their personal home, titled “home sweethome.” This may be understood to not refer to any place-entity that isassociated with an existing place-entity node on social-networkingsystem 160. However, if the place-entity titled “Home Sweet Home” refersto a bar in New York City with the same name, social-networking system160 may associate the place-entity with the place-entity node. Inparticular embodiments, if social-networking system 160 determined thatthere is no existing place-entity node for a newly-added place-entity,social-networking system 160 may create a new place-entity node for thenew place-entity.

In particular embodiments, a large number of user-created place-entitiesmay be added to social-networking system 160. However, because a lot ofthese user-created place-entities may be specific to the user whocreated them, their relative value to other users of social-networkingsystem 160 may be low. As an example and not by way of limitation, if afirst user enters a place during a check-in as “home sweet home,” thisplace-entity is not relevant to a second user who lives elsewhere. Inparticular embodiments, these user-created place-entities and theircorresponding place-entity nodes may be considered “junk nodes” ofsocial graph 200. In particular embodiments, a large number of junknodes may pose difficulties for several functionalities ofsocial-networking system 160. As an example and not by way oflimitation, a large number of junk nodes may provide a lot of irrelevantplaces to be considered for tasks such as a search for places,recommendation of places, or category detection of places. In particularembodiments, these tasks may require a high data quality of the placesconsidered in order to be effective to the user. As an example and notby way of limitation, if a particular user performs a search for the bar“Home Sweet Home” in New York City, but there are 100 user-createdplace-entities by the same name in the area, the search results may beless valuable to the user.

In particular embodiments, determination of whether a particularplace-entity node is a “junk node” may be based on the attributes of theparticular place-entity. As an example and not by way of limitation, afirst user may check-in through social-networking system 160 with theplace named “on my coffee break.” The geographic location of thischeck-in may be provided. As another example and not by way oflimitation, when the user checks-in through a mobile device, the mobiledevice may also send its detected geographic location as part of theplace-entity. In particular embodiments, social-networking system 160may determine whether the location of the check-in is associated with anexisting place based on the geographic location. If there is no place,or no places associated with a real business or point of interest,social-networking system 160 may determine that the place “on my coffeebreak” is of low quality.

In particular embodiments, social-networking system 160 may detect junknodes through a binary classifier that receives a plurality of socialsignals through social-networking system 160. As an example and not byway of limitation, for a given place-entity node on the social graph200, there may be a number of check-ins, likes, posts, comments or otheruser-interactions with the place-entity. In particular embodiments, abinary classifier may use the signals received for the particularplace-entity node to predict whether the place-entity node correspondsto a public place-entity that other users may want to check-in to, or isa non-public, e.g. junk place-entity that is specific to a small groupof users. As an example and not by way of limitation, if a particularplace-entity receives a large number of check-ins from different users,social-networking system 160 may determine that the particularplace-entity is a public place-entity. As another example and not by wayof limitation, if a particular place-entity has a large number ofcheck-ins but the corresponding geographic locations (e.g. latitude andlongitude coordinates) are not centralized, then social-networkingsystem 160 may determine that this place-entity does not correspond to areal, public place.

In particular embodiments, additional methods may be used to determinejunk nodes. In particular embodiments, social-networking system 160 maybuild a “heterogeneous graph” that includes place-entity nodes, n-gramnodes, and user nodes. In particular embodiments, n-gram nodes may bebased on n-grams derived from place entity names. As an example and notby way of limitation, the n-grams may be unigrams or bigrams. As anotherexample and not by way of limitation, a place-entity titled “home sweethome” may have the following five n-grams associated with it: “home,”“sweet,” “home sweet,” “sweet home,” and “home sweet home.” Inparticular embodiments, once the n-gram nodes are generated, eachplace-entity node may be connected by an edge to each of the associatedn-grams. As an example and not by way of limitation, continuing theexample above, the place-entities “home sweet home” and “Home Depot” mayboth have an edge to the “home” n-gram, while “Home Depot” lacks edgesto the other n-grams of “home sweet home.” In particular embodiments,user nodes corresponding to users of social-networking system 160 may beconnected to place-entity nodes by edges that represent social signals.As an example and not by way of limitation, an edge may be createdbetween a user node and a place-entity node if that user has check-ins,likes, comments, posts, views, reviews, or any other activity associatedwith the place-entity node. In particular embodiments, the heterogeneousgraph may comprise place-entity nodes connected to n-gram nodes and usernodes.

FIG. 7 depicts an example heterogeneous graph. The heterogeneous graphmay include a number of n-gram nodes 701-706 corresponding to n-grams; anumber of place-entity nodes 711-714 corresponding to place-entities;and user nodes 721-723 corresponding to users. In the example of FIG. 7,user nodes 721-723 may be connected to one or more of the place-entitynodes with which they have been associated. In the example of FIG. 7,user 721 may have a check-in at place-entity node 711 “San FranciscoAirport.” User 722 may have a review of place-entity node 711 “SanFrancisco Airport,” a check-in at place-entity node 712 “in airportlounge,” and liked a page of place-entity node 713 “Barber Lounge.” User723 may have a review of place-entity node 713 “Barber Lounge,” and acheck-in at place-entity node 714 “my bed.” The heterogeneous graph maycreate connections between each user node and the place-entities withwhich the user has a social signal, as depicted in FIG. 7. In theexample of FIG. 7, the place-entity nodes 711-714 may also be connectedto one or more n-gram nodes corresponding to the n-grams correspondingto the place-entity names. In the example of FIG. 7, place-entity node711 “San Francisco Airport” may be connected to n-gram node 701 “SanFrancisco” and n-gram node 702 “airport.” Place-entity node 712 “inairport lounge” may be connected to n-gram node 702 “airport,” n-gramnode 703 “in,” and n-gram node 704 “lounge.” Place-entity node 713“Barber Lounge” may be connected to n-gram node 704 “lounge” and n-gramnode 705 “barber.” Place-entity 714 “my bed” may be connected to n-gramnode 706 “my bed.”

In particular embodiments, once the heterogeneous graph is constructed,social-networking system 160 may assign initial (or “seed”) scores to aset of place-entity nodes that are known to be high-quality orlow-quality. As an example and not by way of limitation, knownhigh-quality place-entity nodes may be labeled with an initial score of+1, and known low-quality place-entity nodes may be labeled with aninitial score of -1. In particular embodiments, the initial labeling maybe provided by other scoring algorithms, from human evaluators, orthrough user feedback. As an example and not by way of limitation, userfeedback may comprise presenting a particular place-entity to a user andasking the user to determine if the place-entity is high-quality orlow-quality.

In particular embodiments, a label-propagation approach may be used topropagate the scores from one node to another through the graph edges ofthe heterogeneous graph. As an example and not by way of limitation, thescore for a particular n-gram may be determined by averaging the scoresfor all of the place-entity nodes directed connected to the n-gram nodecorresponding to the particular n-gram. In particular embodiments, thescores for new place-entity nodes may be calculated based on the scoresfor the n-gram and user nodes connecting to the place-entity node. Inparticular embodiments, in each iteration of the label-propagationalgorithm, each node may take the scores from its direct neighbors. Inparticular embodiments, the scores may be weighed by a weight factorassigned to each edge from the direct neighbors to the node. An averageof the scores may be taken to obtain an updated score for the node. Thelabel-propagation algorithm may be iterated until the scores for thenodes converge to stable values. In particular embodiments, once thescores have been stabilized, each place-entity may have a score rangingfrom the initial minimum value to the initial maximum value. As anexample and not by way of limitation, the final quality-scores may rangefrom −1 to +1 which may represent a measure of the quality of the node.In particular embodiments, a threshold score may be used to determine ifa place-entity node is high-quality or low-quality. As an example andnot by way of limitation, all place-entity nodes with a score below 0.5may be determined “junk” nodes, while all place-entity nodes with scoresabove 0.5 may be deemed high-quality nodes.

In particular embodiments, the n-gram nodes corresponding to n-grams mayrepresent a similarity between place-entities. Place-entities that sharea direct connection with a particular n-gram node may be considered tohave some amount of similarity. As an example and not by way oflimitation, place-entities “Home Depot” and “home sweet home” may beconsidered to have some similarity due to the shared n-gram node “home.”In particular embodiments, the n-gram “home” may have an overallnegative association. In other words, social-networking system 160 maydetermine that most place-entity nodes with a connection to the “home”n-gram node may have low scores. Meanwhile, the n-gram “depot” may havean overall positive association, as most place-entity nodes with aconnection to “depot” may have higher scores. In particular embodiments,a particular place-entity node may be designated high-quality due to therelative strength of the associated n-grams. As an example and not byway of limitation, for the place-entity node “Home Depot,” the positiveeffect from the n-gram “depot” may be greater than the negative effectfrom the n-gram “home.” As another example, the place-entity node “homesweet home” may be deemed low-quality due to the negative effects of itsn-grams.

In particular embodiments, an original identification of an initialplace-entity as low-quality (−1) or high-quality (+1) may be reversed.As an example and not by way of limitation, a place-entity may haveoriginally been designated low-quality, but after label-propagation, theplace-entity may be deemed high-quality. The label-propagation algorithmmay then change the initial score for the place-entity node to +1.

FIG. 8 illustrates an example method 800 for generating a heterogeneousgraph and calculating quality-scores for place-entity nodes throughlabel propagation. The method may begin at step 810, wheresocial-networking system 160 may access a social graph comprising anumber of nodes and a number of edges connecting the nodes. Inparticular embodiments, each edge between two nodes may establish asingle degree of separation between them. In particular embodiments, thenodes may include a number of place-entity nodes corresponding toplace-entities, where each place-entity is associated with a particulargeographic location, and user nodes corresponding to users ofsocial-networking system 160. In particular embodiments, theplace-entity nodes may be associated with one or more n-grams based onthe place name of the place-entity node. In particular embodiments, then-grams may comprise unigrams and bigrams

At step 820, social-networking system 160 may generate a heterogeneousgraph based on the nodes and edges of the social graph, and a number ofn-gram nodes, each n-gram node corresponding to an n-gram. In particularembodiments, each place-entity node may be connected by one or moreedges to each n-gram node corresponding to an n-gram within the placename of the place-entity. In particular embodiments, each place-entitynode may also be connected by one or more edges to one or more usernodes, where each edge between a user node and a place-entity noderepresents a social-networking interaction by the user corresponding tothe user node with the place-entity corresponding to the place-entitynode. In particular embodiments, social-networking interactions mayinclude check-ins, likes, comments, views, or reviews of a place-entitycorresponding to the place-entity node.

At step 830, social-networking system 160 may assign initialquality-scores to one or more place-entity nodes of a first set ofplace-entity nodes. In particular embodiments, the initial quality-scorefor each place-entity node may represent a measure of quality of theplace-entity node. In particular embodiments, the initial quality-scorefor each place-entity node may be based on the social-networkinginteractions represented by the one or more edges connected to theplace-entity node. In particular embodiments, a maximum quality-scoremay be assigned to a place-entity node known to be a valid place-entitynode, while a minimum quality-score may be assigned to a place-entitynode known to be a junk place-entity node.

At step 840, social-networking system 160 may calculate a finalquality-score for each place-entity node of the heterogeneous graph bypropagating the initial quality-scores through the heterogeneous graphiteratively until the quality-scores reach convergence. In particularembodiments, the iterative propagation may be a label-propagationalgorithm performed on the heterogeneous graph. For each iteration ofthe propagation process, an n-gram-node score may be calculated for eachn-gram node connected to one or more place-entity nodes having anassociated quality-score. In particular embodiments, a user-node scoremay also be calculated for each user node connected to one or moreplace-entity nodes having an associated quality-score. For eachplace-entity node connected to one or more n-gram nodes having anassociated n-gram-node score and one or more user nodes having anassociated user-node score, a quality-score may be calculated based onthe associated n-gram-node scores and user-node scores of the n-gram anduser nodes connected to the place-entity node. In particularembodiments, if quality-scores associated with the place-entity nodes ofthe heterogeneous graph have converged, then the iterative propagationmay end; if the quality-scores have not converged, then the iterativepropagation may continue with another iteration. In particularembodiments, for each iteration, the n-gram-node score for a particularn-gram node may be calculated by averaging the associated quality-scoresof the place-entity nodes connected to the n-gram node. In particularembodiments, for each iteration, the user-node score for a particularuser node may be calculated by averaging the associated quality-scoresof the place-entity nodes connected to the user node. In particularembodiments, for each iteration, the quality-score may be calculated byaveraging the associated n-gram-node scores and user-node scores of then-gram and user nodes connected to the place-entity node. In particularembodiments, determining whether the quality-scores have convergedthrough the iterative propagation may be based on determining that forall nodes of the heterogeneous graph, the sum of associatedquality-scores, n-gram-node scores, and user-node scores between twoconsecutive iterations vary by less than a threshold value.

At step 850, social-networking system 160 may determine whether thefinal quality-score for a particular place-entity node is greater than athreshold quality-score. In particular embodiments, if the finalquality-score is greater than the threshold quality-score, theplace-entity node may be identified as a valid place-entity node. Inparticular embodiments, if the final quality-score is less than thethreshold quality-score, then the place-entity node may be identified asa junk place-identify node. In particular embodiments, social-networkingsystem 160 may remove from the heterogeneous graph each place-entitynode having a final quality-score below the threshold quality score.

In particular embodiments, a user may send a search query associatedwith a particular place-entity node of the heterogeneous graph tosocial-networking system 160. The particular place-entity node may bealso associated with a canonical place-entity node. Social-networkingsystem 160 may determine whether the particular place-entity node has afinal quality-score less than the threshold quality-score. If the finalquality-score is less than the threshold quality-score, thensocial-networking system 160 may send a response comprising a referenceto the canonical place-entity node to the user. If the finalquality-score is greater than the threshold quality-score, thensocial-networking system 160 may send a response comprising a referenceto the particular place-entity node. In particular embodiments, a searchquery may be associated with multiple place-entity nodes,Social-networking system 160 may rank the multiple place-entity nodes bytheir respective final quality-scores, and send references to eachplace-entity node having a ranking greater than a threshold ranking. Inparticular embodiments, the ranking of a particular place-entity nodemay be boosted if the user has a social-graph affinity with theparticular place-entity node greater than a threshold affinity.

Particular embodiments may repeat one or more steps of the method ofFIG. 8, where appropriate. Although this disclosure describes andillustrates particular steps of the method of FIG. 8 as occurring in aparticular order, this disclosure contemplates any suitable steps of themethod of FIG. 8 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates an example method forgenerating a heterogeneous graph and calculating quality-scores forplace-entity nodes, including the particular steps of the method of FIG.8, this disclosure contemplates any suitable method for generating aheterogeneous graph and calculating quality-scores for place-entitynodes including any suitable steps, which may include all, some, or noneof the steps of the method of FIG. 8, where appropriate. Furthermore,although this disclosure describes and illustrates particularcomponents, devices, or systems carrying out particular steps of themethod of FIG. 8, this disclosure contemplates any suitable combinationof any suitable components, devices, or systems carrying out anysuitable steps of the method of FIG. 8.

FIGS. 9A-9D illustrates an example of an iteration of the iterativepropagation process for a heterogeneous graph. In FIG. 9A, initial seedscores may be assigned to place-entity nodes 711-714. Place-entity nodes711 and 713 may be given an initial seed score of +1.0, whileplace-entity nodes 712 and 714 may be assigned an initial seed score of−1.0. In FIG. 9B, the initial scores may be used to propagate scores ton-gram nodes 701-706 and user nodes 721-723. The score for each n-gramor user node may be calculated as an average of the scores of theplace-entity nodes connected to the n-gram or user node. As an exampleand not by way of limitation, n-gram node 701, only connected toplace-entity node 711, may have a score of +1.0. N-gram node 702, whichis connected to place-entity nodes 711 and 712, may average therespective scores to have a score of 0.0. N-gram node 703 may be onlyconnected to place-entity node 712, and may receive a score of −1.0.N-gram node 704 may be connected to place-entity nodes 712 and 713, andmay receive a score of 0.0. N-gram node 705 may be connected only toplace-entity node 713, and may receive a score of +1.0. N-gram node 706may be connected only to place-entity node 714, and may receive a scoreof −1.0. User node 721 may be connected only to place-entity node 711,and may receive a score of +1.0. User node 722 may be connected toplace-entity nodes 711, 712, and 713, and receive a score of +0.33. Usernode 723 may be connected to place-entity nodes 713 and 714, and receivea score of 0.0. Summing all quality-scores, n-gram-node scores, anduser-node scores in the example of FIG. 9B may result in a total scoreof +1.33.

In the example of FIG. 9C, the scores associated with the n-gram anduser nodes may be propagated back to the place-entity nodes to updatequality-scores for the place-entity nodes. In the example of FIG. 9C,Place-entity node 711 may receive an average of the scores for n-gramnodes 701 and 702 and user nodes 721 and 722, resulting in a score of+0.58. Place-entity node 712 may be connected to n-gram nodes 702, 703,and 704, and user node 722, and receives an average of their respectivescores, or −0.17. Place-entity node 713 may be connected to n-gram nodes704 and 705, and user nodes 722-723, and receives the average of theirrespective scores for a score of +0.44. Place-entity node 714 may beconnected to n-gram node 706 and user node 723, and receives a score of−0.5. In the example of FIG. 9C, the sum of all scores may now be +1.68.

In the example of FIG. 9D, the n-gram-node scores and user-node scoresmay be iteratively updated based on the updated scores for place-entitynodes 711-714. Using the same node relationships discussed above forFIG. 9B, n-gram node 701 may now have a score of +0.58; n-gram node 702may have a score of +0.21; n-gram node 703 may have a score of −0.17;n-gram node 704 may have a score of +0.14; n-gram node 705 may have ascore of +0.44; and n-gram node 706 may have an updated score of −0.5.User node 721 may have an updated score of +0.58; user node 722 may havea score of +0.28; and user node 723 may have a score of +0.03. The sumof all scores in FIG. 9D may now be +1.88.

In particular embodiments, this process may be iteratively continueduntil the sum of all quality-scores, n-gram-node scores, and user-nodescores reach convergence. As an example and not by way of limitation,the iterative propagation may be terminated when the variation betweenscores of all nodes in the heterogeneous graph for consecutiveiterations is less than a threshold value. In the example of FIGS.9A-9D, the full iteration of score propagation between FIGS. 9B and 9Dresults in a score difference of 0.55, which may be above a thresholdvalue for determining that convergence has been reached.

In particular embodiments, for a particular place-entity node,social-networking system 160 may determine basic features from placenames, attributes, and locations. As an example and not by way oflimitation, place names may determine features such as n-grams, e.g.unigrams or bigrams; a number of tokens, letters, spaces, symbols, oruppercase letters; or whether the name is a year, starts with a number,contains an emoticon, or refers to a website. As another example and notby way of limitation, attributes of the place-entity nodes may includewhether the place-entity has a phone number, language, website, address,alias, country, or zip code; whether the place-entity is from aWikipedia page or an owned page; a total number of fans of theplace-entity node; or a number of days from creation of the place-entitynode. As an example and not by way of limitation, the location of aplace-entity node may be used to determine a number of place-entitynodes and a number of owned place-entity nodes (e.g. place-entities froman owned page) that have the same physical location as a particularplace-entity node. The total number of place-entity nodes, the number ofowned place-entity nodes, and a ratio of owned place-entity nodes tototal place-entity nodes may be used as features. In particularembodiments, a binary feature may be implemented to determine whetherthe total number of place-entity nodes exceeds a threshold count.

In particular embodiments, anomalous language characteristics may bedetermined by comparing place names associated with high-qualityplace-entity nodes with place names associated with low-qualityplace-entity nodes. In particular embodiments, the comparison mayinclude comparing two trigram language models, one trained fromlow-quality place names and one trained from high-quality place names.

In particular embodiments, social features may be used to determinewhether a place-entity node is high-quality or low-quality. As anexample and not by way of limitation, social features may include: anumber of distinct users of social-networking system 160 who havechecked-in or have been tagged with the place-entity node; the number ofdays without any check-ins to the place-entity; and a percentage ofnon-local check-in users. In particular embodiments, demographic ofcheck-in users may provide additional information. As an example and notby way of limitation, if the users who have checked-in at a place-entitycomprise users with a wide demographic distribution, the place-entity islikely to correspond to a high-quality place-entity node.

Identification of Real-Best-Pages

In particular embodiments, a “real best page”, may be a node or pagethat is determined to be the best-quality node or page for a set ofnodes or a set of pages. In particular embodiments, a real best page mayalso be referred to as a search-log best page. In particularembodiments, the set of nodes or pages may share a common connection toa particular entity. As an example and not by way of limitation, for aparticular sports team, there may be numerous pages related to thesports team on social-networking system 160, including fan pages, newsreports, fan groups, player pages, or the team's official page. For thisparticular set of pages relating to the sports team entity, the realbest page may be the team's official page. In particular embodiments,place-entities may be associated with a number of place-entity nodes. Asan example and not by way of limitation, social-networking system 160may have a number of place-entity nodes referring to New York City.

In particular embodiments, the real best page may be identified by ahuman operator or an intelligent algorithm. As an example and not by wayof limitation, a human evaluator may be presented with six top-scoringnodes relating to a particular place-entity, and asked to select one ofthe nodes which is the most representative of the particularplace-entity. The selected node may then become the real best page thatcorresponds to the particular place-entity.

In particular embodiments, a scoring algorithm of social-networkingsystem 160 may predict the “best page” for a set of nodes, wherein thebest page is the top-scoring node from the set of nodes. In particularembodiments, the selection of the “best page” may be based on factorssuch as the associated quality-score, number of social-networkinginteractions with the page, the language used in the page, or othermetrics regarding the page. In particular embodiments, the best page andthe real best page may be identical. In particular embodiments, due toimperfections in the social graph or place-entities graph, the best pageand the real best page may be different.

The quality of a particular cluster of nodes of the social graph may beindicated by the metrics of precision and recall. Precision, as usedherein, may refer to the fraction of nodes within a cluster that arecorrectly included in the cluster. As an example and not by way oflimitation, if every node in a cluster refers to the same place-entity,the cluster may have 100% precision. Recall, as used herein, mayrepresent the fraction of relevant nodes that are included in thecluster. As an example and not by way of limitation, if only half of thenodes that refer to a particular place-entity are included in thecluster, then the cluster may only have 50% recall.

In particular embodiments, the quality of the place-entities graph maybe determined by measuring the precision and recall of one or moreclusters. In particular embodiments, each node in a set of sample nodesmay be labeled with its real best page. In particular embodiments, everynode is a cluster may be evaluated. However, such a method may becomputationally inefficient for a large number of nodes and clusters.

In particular embodiments, for each place-entity node in a set ofplace-entity nodes, the best representation of that place-entity nodemay be determined from among all duplicates of that place-entity node.The best representation may be the real best page, or a canonicalplace-entity node. As an example and not by way of limitation, if a usercreates a page on social-networking system 160 via a check-in at aplace-entity to create a particular place-entity node, but there is anofficial page in the place-entities graph for the place-entity, thensocial-networking system 160 may designate the place-entity node of theofficial page as the canonical place-entity node for the user'scheck-in. In particular embodiments, once every place-entity node in theset of place-entity nodes is labeled with its respective canonicalplace-entity node, the precision and recall of the place-entity nodesmay be measured. As discussed above, associating place-entity nodes withtheir respective canonical place-entity nodes may be used for creating aredirection graph for place-entity nodes.

In particular embodiments, labeling place-entity nodes may includeassigning an initial cluster-score for each place-entity node, based ona class of the place-entity node. In particular embodiments, the classmay be the source of the place-entity node or the type of page onsocial-networking system 160 corresponding to the place-entity node.Classes of place-entity nodes deemed to be of higher quality may beassigned a greater initial cluster-score. As an example and not by wayof limitation, an authentic or official page of social-networking system160 for a place-entity may be assigned an initial cluster-score of32000. As another example and not by way of limitation, a page from areliable external website relating to a place-entity may be assigned aninitial cluster-score of 16000. As another example and not by way oflimitation, an unowned page associated with the place-entity may beassigned an initial cluster-score of 8000.

In particular embodiments, the initial cluster-scores may be adjustedbased on one or more social signals associated with each place-entitynode. As an example and not by way of limitation, the cluster-scores maybe adjusted based on a number of check-ins, posts, likes, comments,views or reviews of a place-entity associated with the place-entitynode. By adjusting the initial cluster-scores of the place-entity nodes,a tiebreaker may be provided for pages within the same class. As anexample and not by way of limitation, if there are two place-entitynodes from official pages, one from “New York City” and a second from“Borough of Manhattan,” but the “New York City” place-entity node isassociated with more social signals, the cluster-score for “New YorkCity” may be higher than the cluster-score for “Borough of Manhattan.”In particular embodiments, candidate pages with higher cluster-scoresthan a threshold cluster-score may be identified. In particularembodiments, the candidate pages, or a subset of the candidate pages,may be presented to a human evaluator or an intelligent algorithm toidentify the top-scoring page that best represents the place-entity. Theplace-entity node corresponding to the top-scoring page may bedetermined to be the canonical place-entity node for the place-entitycluster of place-entity nodes associated with the place-entity. Inparticular embodiments, a redirection graph may be updated to redirectall nodes in the cluster from an initial canonical place-entity node tothe new canonical place-entity node.

In particular embodiments, the process of labeling place-entity nodesmay not be done for each place-entity node in the redirection graph. Asan example and not by way of limitation, if a redirection graph hashundreds of millions or billions of nodes, it may be computationallyintensive to perform this process for each and every place-entity node.In particular embodiments, a subset of the redirection graph may belabeled and used to estimate the overall quality of the redirectiongraph. In particular embodiments, the subset of place-entity nodes maybe selected randomly. In particular embodiments, to prevent low-qualityor less-visited pages from overly affecting the evaluation of theredirection graph, the subset of nodes may be selected by applyingweights to the place-entity nodes. In particular embodiments, theweighting may be based on a variety of social signals associated withthe place-entity node. As an example and not by way of limitation, apage with more likes, comments, views, or reviews of the place-entityassociated with the place-entity node may be selected for the subsetover a page with fewer social signals. In particular embodiments, theweighting may be based on a viewer-entity-pair (VEP) value for aplace-entity node. The VEP value may represent the number of distinctusers who have viewed the page of the place-entity node. By weightingplace-entity nodes based on usage or frequency of social signals, pagesthat are more popular may be given greater weight and have a higherchance of being selecting for labeling. In particular embodiments, thisweighting process may focus on improving place-entities that are morepopular in the place-entities graph.

FIG. 10 illustrates an example method 1000 for determining a canonicalplace-entity node for a first place-entity cluster. The method may beginat step 1010, where social-networking system 160 may access a firstplace-entity cluster of a redirection graph. In particular embodiments,the first place-entity cluster may include a number of place-entitynodes, including an initial canonical place-entity node for the cluster.In particular embodiments, each other place-entity node in the firstplace-entity cluster may be connected to the initial canonicalplace-entity node by a redirection edge. In particular embodiments, thefirst place-entity cluster may be selected based on a number of socialsignals associated with the place-entity nodes of the first place-entitycluster. This method of selecting a place-entity cluster may improve thechances that place-entity nodes and clusters that are alreadyhigh-quality are being evaluated. In particular embodiments, selectingthe first place-entity cluster may be based on a viewer-entity-pairvalue for a page associated with a place-entity node of the firstplace-entity cluster.

At step 1020, social-networking system 160 may calculate a cluster-scorefor each place-entity node in the first place-entity cluster. Inparticular embodiments, an initial cluster-score for each place-entitynode may be based on a class of the place-entity node. In particularembodiments, the initial cluster-score may be adjusted based on a numberof social signals associated with the place-entity node to calculate thecluster-score. In particular embodiments, social signals may includecheck-ins, likes, comments, posts, views, or reviews of a place-entityassociated with the place-entity node.

At step 1030, social-networking system 160 may identify place-entitynodes with a cluster-score greater than a threshold cluster-score. Atstep 1040, social-networking system 160 may receive a selection of anidentified place-entity node as a replacement canonical place-entitynode for the first place-entity cluster. In particular embodiments, ifthe replacement canonical place-entity node is different from theinitial canonical place-entity node, then the first place-entity clustermay be updated by redefining the first place-entity cluster to addadditional place-entity nodes of the redirection graph, each additionalplace-entity node having a duplication-value with respect to thereplacement canonical place-entity node greater than a thresholdduplication value. In particular embodiments, the first place-entitycluster may be redefined to remove at least one place-entity node fromthe first place-entity cluster, where each removed place-entity node hasa duplication-value with respect to the replacement canonicalplace-entity node that is less than or equal to the thresholdduplication-value.

At step 1050, social-networking system 160 may update the redirectionedges of the first place-entity cluster to connect each of the otherplace-entity nodes to the replacement canonical place-entity node. Inparticular embodiments, the redirection edges may be updated by removingthe redirection edges from each other place-entity node of the firstplace-entity cluster and the initial canonical place-entity node, andadding redirection edges between each other place-entity node to thereplacement canonical place-entity node.

In particular embodiments, a quality-metric for the first place-entitycluster may be determined based on a precision-value or a recall-valuefor the first place-entity cluster. In particular embodiments, theprecision-value may be calculated using the formula (N₎−N_(R))/N₀, whereN₀ is a number of place-entity nodes initially included the firstplace-entity cluster, and N_(R) is a number of place-entity nodesremoved from the first place-entity cluster when it is updated. Inparticular embodiments, the recall-value may be calculated using theformula (N₀−N_(R))/(N₀−N_(R)+N_(A)), wherein N₀ is a number ofplace-entity nodes initially included the first place-entity cluster,N_(R) is a number of place-entity nodes removed from the firstplace-entity cluster when it is updated, and N_(A) is a number ofplace-entity nodes added to the first place-entity cluster when it isupdated. In particular embodiments, the quality-metric may be based onwhether the initial canonical place-entity node is different from thereplacement canonical place-entity node. In particular embodiments, theone or more place-entity nodes having a cluster-score greater than thethreshold cluster-score may be provided to a client system of a user ofsocial-networking system 160, and the user may select one of theplace-entity nodes as the replacement canonical place-entity node. Inparticular embodiments, selecting an identified place-entity node as thereplacement canonical place-entity node may be based on thecluster-score of the selected place-entity node. In particularembodiments, the identified one or more place-entity nodes having acluster-score greater than the threshold cluster-score may include theinitial canonical place-entity node.

Particular embodiments may repeat one or more steps of the method ofFIG. 10, where appropriate. Although this disclosure describes andillustrates particular steps of the method of FIG. 10 as occurring in aparticular order, this disclosure contemplates any suitable steps of themethod of FIG. 10 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates an example method fordetermining a canonical place-entity node for a first place-entitycluster including the particular steps of the method of FIG. 10, thisdisclosure contemplates any suitable method for determining a canonicalplace-entity node for a first place-entity cluster including anysuitable steps, which may include all, some, or none of the steps of themethod of FIG. 10, where appropriate. Furthermore, although thisdisclosure describes and illustrates particular components, devices, orsystems carrying out particular steps of the method of FIG. 10, thisdisclosure contemplates any suitable combination of any suitablecomponents, devices, or systems carrying out any suitable steps of themethod of FIG. 0.

Systems and Methods

FIG. 11 illustrates an example computer system 1100. In particularembodiments, one or more computer systems 1100 perform one or more stepsof one or more methods described or illustrated herein. In particularembodiments, one or more computer systems 1100 provide functionalitydescribed or illustrated herein. In particular embodiments, softwarerunning on one or more computer systems 1100 performs one or more stepsof one or more methods described or illustrated herein or providesfunctionality described or illustrated herein. Particular embodimentsinclude one or more portions of one or more computer systems 1100.Herein, reference to a computer system may encompass a computing device,and vice versa, where appropriate. Moreover, reference to a computersystem may encompass one or more computer systems, where appropriate.

This disclosure contemplates any suitable number of computer systems1100. This disclosure contemplates computer system 1100 taking anysuitable physical form. As example and not by way of limitation,computer system 1100 may be an embedded computer system, asystem-on-chip (SOC), a single-board computer system (SBC) (such as, forexample, a computer-on-module (COM) or system-on-module (SOM)), adesktop computer system, a laptop or notebook computer system, aninteractive kiosk, a mainframe, a mesh of computer systems, a mobiletelephone, a personal digital assistant (PDA), a server, a tabletcomputer system, an augmented/virtual reality device, or a combinationof two or more of these. Where appropriate, computer system 1100 mayinclude one or more computer systems 1100; be unitary or distributed;span multiple locations; span multiple machines; span multiple datacenters; or reside in a cloud, which may include one or more cloudcomponents in one or more networks. Where appropriate, one or morecomputer systems 1100 may perform without substantial spatial ortemporal limitation one or more steps of one or more methods describedor illustrated herein. As an example and not by way of limitation, oneor more computer systems 1100 may perform in real time or in batch modeone or more steps of one or more methods described or illustratedherein. One or more computer systems 1100 may perform at different timesor at different locations one or more steps of one or more methodsdescribed or illustrated herein, where appropriate.

In particular embodiments, computer system 1100 includes a processor1102, memory 1104, storage 1106, an input/output (I/O) interface 1108, acommunication interface 1110, and a bus 1112. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 1102 includes hardware forexecuting instructions, such as those making up a computer program. Asan example and not by way of limitation, to execute instructions,processor 1102 may retrieve (or fetch) the instructions from an internalregister, an internal cache, memory 1104, or storage 1106; decode andexecute them; and then write one or more results to an internalregister, an internal cache, memory 1104, or storage 1106. In particularembodiments, processor 1102 may include one or more internal caches fordata, instructions, or addresses. This disclosure contemplates processor1102 including any suitable number of any suitable internal caches,where appropriate. As an example and not by way of limitation, processor1102 may include one or more instruction caches, one or more datacaches, and one or more translation lookaside buffers (TLBs).Instructions in the instruction caches may be copies of instructions inmemory 1104 or storage 1106, and the instruction caches may speed upretrieval of those instructions by processor 1102. Data in the datacaches may be copies of data in memory 1104 or storage 1106 forinstructions executing at processor 1102 to operate on; the results ofprevious instructions executed at processor 1102 for access bysubsequent instructions executing at processor 1102 or for writing tomemory 1104 or storage 1106; or other suitable data. The data caches mayspeed up read or write operations by processor 1102. The TLBs may speedup virtual-address translation for processor 1102. In particularembodiments, processor 1102 may include one or more internal registersfor data, instructions, or addresses. This disclosure contemplatesprocessor 1102 including any suitable number of any suitable internalregisters, where appropriate. Where appropriate, processor 1102 mayinclude one or more arithmetic logic units (ALUs); be a multi-coreprocessor; or include one or more processors 1102. Although thisdisclosure describes and illustrates a particular processor, thisdisclosure contemplates any suitable processor.

In particular embodiments, memory 1104 includes main memory for storinginstructions for processor 1102 to execute or data for processor 1102 tooperate on. As an example and not by way of limitation, computer system1100 may load instructions from storage 1106 or another source (such as,for example, another computer system 1100) to memory 1104. Processor1102 may then load the instructions from memory 1104 to an internalregister or internal cache. To execute the instructions, processor 1102may retrieve the instructions from the internal register or internalcache and decode them. During or after execution of the instructions,processor 1102 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor1102 may then write one or more of those results to memory 1104. Inparticular embodiments, processor 1102 executes only instructions in oneor more internal registers or internal caches or in memory 1104 (asopposed to storage 1106 or elsewhere) and operates only on data in oneor more internal registers or internal caches or in memory 1104 (asopposed to storage 1106 or elsewhere). One or more memory buses (whichmay each include an address bus and a data bus) may couple processor1102 to memory 1104. Bus 1112 may include one or more memory buses, asdescribed below. In particular embodiments, one or more memorymanagement units (MMUs) reside between processor 1102 and memory 1104and facilitate accesses to memory 1104 requested by processor 1102. Inparticular embodiments, memory 1104 includes random access memory (RAM).This RAM may be volatile memory, where appropriate. Where appropriate,this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, whereappropriate, this RAM may be single-ported or multi-ported RAM. Thisdisclosure contemplates any suitable RAM. Memory 1104 may include one ormore memories 1104, where appropriate. Although this disclosuredescribes and illustrates particular memory, this disclosurecontemplates any suitable memory.

In particular embodiments, storage 1106 includes mass storage for dataor instructions. As an example and not by way of limitation, storage1106 may include a hard disk drive (HDD), a floppy disk drive, flashmemory, an optical disc, a magneto-optical disc, magnetic tape, or aUniversal Serial Bus (USB) drive or a combination of two or more ofthese. Storage 1106 may include removable or non-removable (or fixed)media, where appropriate. Storage 1106 may be internal or external tocomputer system 1100, where appropriate. In particular embodiments,storage 1106 is non-volatile, solid-state memory. In particularembodiments, storage 1106 includes read-only memory (ROM). Whereappropriate, this ROM may be mask-programmed ROM, programmable ROM(PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM),electrically alterable ROM (EAROM), or flash memory or a combination oftwo or more of these. This disclosure contemplates mass storage 1106taking any suitable physical form. Storage 1106 may include one or morestorage control units facilitating communication between processor 1102and storage 1106, where appropriate. Where appropriate, storage 1106 mayinclude one or more storages 1106. Although this disclosure describesand illustrates particular storage, this disclosure contemplates anysuitable storage.

In particular embodiments, I/O interface 1108 includes hardware,software, or both, providing one or more interfaces for communicationbetween computer system 1100 and one or more I/O devices. Computersystem 1100 may include one or more of these I/O devices, whereappropriate. One or more of these I/O devices may enable communicationbetween a person and computer system 1100. As an example and not by wayof limitation, an I/O device may include a keyboard, keypad, microphone,monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet,touch screen, trackball, video camera, another suitable I/O device or acombination of two or more of these. An I/O device may include one ormore sensors. This disclosure contemplates any suitable I/O devices andany suitable I/O interfaces 1108 for them. Where appropriate, I/Ointerface 1108 may include one or more device or software driversenabling processor 1102 to drive one or more of these I/O devices. I/Ointerface 1108 may include one or more I/O interfaces 1108, whereappropriate. Although this disclosure describes and illustrates aparticular I/O interface, this disclosure contemplates any suitable I/Ointerface.

In particular embodiments, communication interface 1110 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 1100 and one or more other computer systems 1100 or oneor more networks. As an example and not by way of limitation,communication interface 1110 may include a network interface controller(NIC) or network adapter for communicating with an Ethernet or otherwire-based network or a wireless NIC (WNIC) or wireless adapter forcommunicating with a wireless network, such as a WI-FI network. Thisdisclosure contemplates any suitable network and any suitablecommunication interface 1110 for it. As an example and not by way oflimitation, computer system 1100 may communicate with an ad hoc network,a personal area network (PAN), a local area network (LAN), a wide areanetwork (WAN), a metropolitan area network (MAN), or one or moreportions of the Internet or a combination of two or more of these. Oneor more portions of one or more of these networks may be wired orwireless. As an example, computer system 1100 may communicate with awireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FInetwork, a WI-MAX network, a cellular telephone network (such as, forexample, a Global System for Mobile Communications (GSM) network), orother suitable wireless network or a combination of two or more ofthese. Computer system 1100 may include any suitable communicationinterface 1110 for any of these networks, where appropriate.Communication interface 1110 may include one or more communicationinterfaces 1110, where appropriate. Although this disclosure describesand illustrates a particular communication interface, this disclosurecontemplates any suitable communication interface.

In particular embodiments, bus 1112 includes hardware, software, or bothcoupling components of computer system 1100 to each other. As an exampleand not by way of limitation, bus 1112 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a Micro ChannelArchitecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, aPCI-Express (PCIe) bus, a serial advanced technology attachment (SATA)bus, a Video Electronics Standards Association local (VLB) bus, oranother suitable bus or a combination of two or more of these. Bus 1112may include one or more buses 1112, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

Herein, a computer-readable non-transitory storage medium or media mayinclude one or more semiconductor-based or other integrated circuits(ICs) (such, as for example, field-programmable gate arrays (FPGAs) orapplication-specific ICs (ASICs)), hard disk drives (HDDs), hybrid harddrives (HHDs), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy diskettes, floppydisk drives (FDDs), magnetic tapes, solid-state drives (SSDs),RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage media, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

Miscellaneous

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context. Therefore, herein, “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

The scope of this disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsdescribed or illustrated herein that a person having ordinary skill inthe art would comprehend. The scope of this disclosure is not limited tothe example embodiments described or illustrated herein. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,feature, functions, operations, or steps, any of these embodiments mayinclude any combination or permutation of any of the components,elements, features, functions, operations, or steps described orillustrated anywhere herein that a person having ordinary skill in theart would comprehend. Furthermore, reference in the appended claims toan apparatus or system or a component of an apparatus or system beingadapted to, arranged to, capable of, configured to, enabled to, operableto, or operative to perform a particular function encompasses thatapparatus, system, component, whether or not it or that particularfunction is activated, turned on, or unlocked, as long as thatapparatus, system, or component is so adapted, arranged, capable,configured, enabled, operable, or operative. Additionally, although thisdisclosure describes or illustrates particular embodiments as providingparticular advantages, particular embodiments may provide none, some, orall of these advantages.

What is claimed is:
 1. A method comprising, by one or more computingdevices: receiving, from a client system of a user via a search client,a search query; identifying a first place-entity based on the searchquery; accessing a place-entities graph comprising a plurality ofplace-entity nodes, each place-entity node representing a place-entityassociated with a particular geographic location, wherein the firstplace-entity is represented by a first place-entity node in theplace-entities graph; accessing a redirection graph of the searchclient, wherein the redirection graph comprises the plurality ofplace-entity nodes and a plurality of place-entity clusters, andwherein, for each place-entity node in each place-entity cluster, aredirection edge connects the place-entity node and a respectivecanonical place-entity node of the place-entity cluster; and sending, tothe client system, a response to the search query, wherein: if the firstplace-entity node is connected to a canonical place-entity node by aredirection edge within the redirection graph, the response comprises areference to the canonical place-entity node; else the responsecomprises a reference to the first place-entity node.
 2. The method ofclaim 1, further comprising: identifying a search function type of thesearch query, wherein the response to the search query is based on thesearch function type.
 3. The method of claim 2, wherein the redirectiongraph is a custom redirection graph based on the search function type.4. The method of claim 1, wherein: each of the plurality of place-entityclusters comprises a respective plurality of place-entity nodes; andeach of the plurality of place-entity nodes of a respective place-entitycluster is associated with a respective duplication-value indicating alikelihood that the place-entity node and a respective canonical node ofthe place-entity cluster correspond to a same geographic location. 5.The method of claim 4, wherein each redirection edge of the redirectiongraph is based on the duplication-value of the respective place-entitynodes connected by the redirection edge.
 6. The method of claim 4,wherein: for each place-entity cluster, the respective canonicalplace-entity node of the place-entity cluster corresponds to a selectedplace-entity node of the place-entity cluster; and the respectivecanonical place-entity node is selected based on the respectiveduplication-value of each place-entity node of the place-entity cluster.7. The method of claim 4, wherein a redirection edge is establishedbetween a place-entity node and a respective canonical place-entity nodeof a place-entity cluster if the duplication-value of the place-entitynode is greater than a threshold duplication-value.
 8. The method ofclaim 7, wherein the threshold duplication-value is based on anattribute of the user.
 9. The method of claim 4, wherein: the searchclient is associated with a threshold redirect-value indicating whetherto redirect a place-entity to another place-entity in the sameplace-entity cluster.
 10. The method of claim 9, wherein a redirectionedge is established between a place-entity node and a respectivecanonical node of a place-entity cluster if the duplication-value of theplace-entity node is greater than the threshold redirect-value.
 11. Themethod of claim 1, further comprising: identifying one or moreplace-entity nodes matching the search query, wherein the response tothe search query further comprises one or more references to one or moreof the identified place-entity nodes matching the search query.
 12. Themethod of claim 11, further comprising: ranking the identifiedplace-entity nodes matching the search query; and selecting one of theidentified place-entity nodes based on their rankings, wherein theresponse to the search query further comprises a reference to theselected place-entity node.
 13. The method of claim 12, wherein: eachplace-entity node has a social-graph affinity with respect to the user;and the identified place-entity nodes matching the search query areranked based on their respective the social-graph affinities.
 14. Themethod of claim 1, further comprising: accessing a second redirectiongraph of the search client; and combining the redirection graph and thesecond redirection graph, wherein the response to the search query isbased on the combined redirection graph and second redirection graph.15. The method of claim 1, wherein: the search client is associated witha plurality of redirection graphs; and each of the plurality ofredirection graphs is associated with a respective context.
 16. Themethod of claim 15, further comprising: identifying a context of thesearch query; and selecting, as the redirection graph, one of theplurality of redirection graphs having a respective context that matchesthe identified context of the search query.
 17. The method of claim 1,wherein the redirection graph is personalized for the user.
 18. Themethod of claim 1, wherein: each place-entity node of each place-entitycluster is associated with a respective quality-score; for eachplace-entity cluster, the respective canonical place-entity node of theplace-entity cluster is a place-entity node of the place-entity clusterhaving a highest quality-score; and the respective quality-score of aplace-entity node is based on one or more of an accuracy of attributesof a place-entity associated with the place-entity node, a number ofphotos associated with the place-entity, an amount of content associatedwith the place-entity, a recency-value associated with the content orphotos, or a number of social signals associated with the place-entity.19. One or more computer-readable non-transitory storage media embodyingsoftware that is operable when executed to: receive, from a clientsystem of a user via a search client, a search query; identify a firstplace-entity based on the search query; access a place-entities graphcomprising a plurality of place-entity nodes, each place-entity noderepresenting a place-entity associated with a particular geographiclocation, wherein the first place-entity is represented by a firstplace-entity node in the place-entities graph; access a redirectiongraph of the search client, wherein the redirection graph comprises theplurality of place-entity nodes and a plurality of place-entityclusters, and wherein, for each place-entity node in each place-entitycluster, a redirection edge connects the place-entity node and arespective canonical place-entity node of the place-entity cluster; andsend, to the client system, a response to the search query, wherein: ifthe first place-entity node is connected to a canonical place-entitynode by a redirection edge within the redirection graph, the responsecomprises a reference to the canonical place-entity node; else theresponse comprises a reference to the first place-entity node.
 20. Asystem comprising: one or more processors; and a memory coupled to theprocessors comprising instructions executable by the processors, theprocessors operable when executing the instructions to: receive, from aclient system of a user via a search client, a search query; identify afirst place-entity based on the search query; access a place-entitiesgraph comprising a plurality of place-entity nodes, each place-entitynode representing a place-entity associated with a particular geographiclocation, wherein the first place-entity is represented by a firstplace-entity node in the place-entities graph; access a redirectiongraph of the search client, wherein the redirection graph comprises theplurality of place-entity nodes and a plurality of place-entityclusters, and wherein, for each place-entity node in each place-entitycluster, a redirection edge connects the place-entity node and arespective canonical place-entity node of the place-entity cluster; andsend, to the client system, a response to the search query, wherein: ifthe first place-entity node is connected to a canonical place-entitynode by a redirection edge within the redirection graph, the responsecomprises a reference to the canonical place-entity node; else theresponse comprises a reference to the first place-entity node.